From f6fbfc6f4449b3a5b49a44bd5de747e5c42f6d61 Mon Sep 17 00:00:00 2001 From: Kasun Vithanage Date: Thu, 22 Oct 2026 18:48:19 +0530 Subject: [PATCH 1/2] feat(site): add durable.wavezync.com An Astro + Starlight site for Durable: a landing page, the docs and interactive examples. The docs are the packages' own markdown (READMEs, guides, changelogs), read in place through site/src/docs.ts, so the site and HexDocs share one source. - Landing page with the hero graph, the AI agent demo and the Resilient / Reliable / Resumable story, in the Blue hour palette - Example pages run a simulated workflow next to the README code - Changelogs render as a release timeline (site/src/changelog.ts) - SEO: sitemap, robots.txt, llms.txt, JSON-LD and a social card (og/og.html renders public/og.png) - Deploys to Cloudflare Workers static assets (wrangler.jsonc, `pnpm run deploy`) Claude-Session: https://claude.ai/code/session_012aEMFtJKJsMz1vGtbSijGR --- site/.gitignore | 4 + site/astro.config.mjs | 58 + site/og/og.html | 114 + site/package.json | 28 + site/pnpm-lock.yaml | 5273 +++++++++++++++++++ site/public/_headers | 8 + site/public/favicon.svg | 1 + site/public/og.png | Bin 0 -> 215646 bytes site/public/robots.txt | 4 + site/src/assets/logo.svg | 1 + site/src/assets/wavezync-mark.png | Bin 0 -> 52216 bytes site/src/assets/wavezync-wordmark.png | Bin 0 -> 26098 bytes site/src/changelog.ts | 88 + site/src/code-theme.ts | 50 + site/src/components/AgentDemo.astro | 428 ++ site/src/components/DashboardShowcase.astro | 264 + site/src/components/Features.astro | 102 + site/src/components/FontPreload.astro | 9 + site/src/components/Graph.astro | 163 + site/src/components/Head.astro | 7 + site/src/components/HeaderLinks.astro | 23 + site/src/components/Illus.astro | 367 ++ site/src/components/Observe.astro | 112 + site/src/components/Ops.astro | 59 + site/src/components/PackageHeader.astro | 79 + site/src/components/PageTitle.astro | 10 + site/src/components/Sim.astro | 101 + site/src/content.config.ts | 7 + site/src/docs.ts | 170 + site/src/examples.ts | 132 + site/src/layouts/Landing.astro | 197 + site/src/pages/examples/[slug].astro | 29 + site/src/pages/examples/index.astro | 39 + site/src/pages/index.astro | 456 ++ site/src/pages/llms.txt.ts | 44 + site/src/sim/engine.ts | 383 ++ site/src/sim/layout.ts | 120 + site/src/sim/sim.css | 140 + site/src/styles/fonts.css | 37 + site/src/styles/theme.css | 165 + site/tsconfig.json | 5 + site/wrangler.jsonc | 17 + 42 files changed, 9294 insertions(+) create mode 100644 site/.gitignore create mode 100644 site/astro.config.mjs create mode 100644 site/og/og.html create mode 100644 site/package.json create mode 100644 site/pnpm-lock.yaml create mode 100644 site/public/_headers create mode 100644 site/public/favicon.svg create mode 100644 site/public/og.png create mode 100644 site/public/robots.txt create mode 100644 site/src/assets/logo.svg create mode 100644 site/src/assets/wavezync-mark.png create mode 100644 site/src/assets/wavezync-wordmark.png create mode 100644 site/src/changelog.ts create mode 100644 site/src/code-theme.ts create mode 100644 site/src/components/AgentDemo.astro create mode 100644 site/src/components/DashboardShowcase.astro create mode 100644 site/src/components/Features.astro create mode 100644 site/src/components/FontPreload.astro create mode 100644 site/src/components/Graph.astro create mode 100644 site/src/components/Head.astro create mode 100644 site/src/components/HeaderLinks.astro create mode 100644 site/src/components/Illus.astro create mode 100644 site/src/components/Observe.astro create mode 100644 site/src/components/Ops.astro create mode 100644 site/src/components/PackageHeader.astro create mode 100644 site/src/components/PageTitle.astro create mode 100644 site/src/components/Sim.astro create mode 100644 site/src/content.config.ts create mode 100644 site/src/docs.ts create mode 100644 site/src/examples.ts create mode 100644 site/src/layouts/Landing.astro create mode 100644 site/src/pages/examples/[slug].astro create mode 100644 site/src/pages/examples/index.astro create mode 100644 site/src/pages/index.astro create mode 100644 site/src/pages/llms.txt.ts create mode 100644 site/src/sim/engine.ts create mode 100644 site/src/sim/layout.ts create mode 100644 site/src/sim/sim.css create mode 100644 site/src/styles/fonts.css create mode 100644 site/src/styles/theme.css create mode 100644 site/tsconfig.json create mode 100644 site/wrangler.jsonc diff --git a/site/.gitignore b/site/.gitignore new file mode 100644 index 0000000..eb1c464 --- /dev/null +++ b/site/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +.astro/ +.wrangler/ diff --git a/site/astro.config.mjs b/site/astro.config.mjs new file mode 100644 index 0000000..7a451e8 --- /dev/null +++ b/site/astro.config.mjs @@ -0,0 +1,58 @@ +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; +import { satteri } from '@astrojs/markdown-satteri'; +import { DOCS, REPO, docLinks } from './src/docs.ts'; +import { changelog } from './src/changelog.ts'; +import { EXAMPLES } from './src/examples.ts'; +import { macroCalls, night } from './src/code-theme.ts'; + +const doc = (d) => ({ label: d.label, slug: d.id }); +const group = (name) => DOCS.filter((d) => d.group === name).map(doc); + +export default defineConfig({ + site: 'https://durable.wavezync.com', + trailingSlash: 'always', + markdown: { processor: satteri({ mdastPlugins: [docLinks, changelog] }) }, + integrations: [ + starlight({ + title: 'Durable', + description: + 'Open-source durable workflow engine for Elixir. Retries, sleeps, events, human approvals and sagas, saved step by step so runs resume after crashes.', + logo: { src: './src/assets/logo.svg' }, + head: [ + { tag: 'meta', attrs: { property: 'og:image', content: 'https://durable.wavezync.com/og.png' } }, + { tag: 'meta', attrs: { property: 'og:image:width', content: '1200' } }, + { tag: 'meta', attrs: { property: 'og:image:height', content: '630' } }, + { tag: 'meta', attrs: { property: 'og:image:alt', content: 'Resilient, Reliable, Resumable workflows for Elixir' } }, + { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://durable.wavezync.com/og.png' } }, + ], + favicon: '/favicon.svg', + social: [{ icon: 'github', label: 'GitHub', href: REPO }], + customCss: ['./src/styles/fonts.css', './src/styles/theme.css'], + components: { + Head: './src/components/Head.astro', + PageTitle: './src/components/PageTitle.astro', + SocialIcons: './src/components/HeaderLinks.astro', + }, + expressiveCode: { + themes: [night, 'github-light'], + shiki: { transformers: [macroCalls] }, + styleOverrides: { borderRadius: '12px', codeFontFamily: 'var(--sl-font-mono)', uiFontFamily: 'var(--sl-font)' }, + }, + sidebar: [ + { label: 'Start here', items: group('Start here') }, + { label: 'Guides', items: group('Guides') }, + { label: 'Examples', items: [{ label: 'All examples', link: '/examples/' }, ...EXAMPLES.map((e) => ({ label: e.heading, link: `/examples/${e.slug}/` }))] }, + { label: 'Dashboard', items: group('Dashboard') }, + { label: 'Changelog', items: group('Changelog') }, + { + label: 'API reference', + items: [ + { label: 'durable on HexDocs', link: 'https://hexdocs.pm/durable' }, + { label: 'durable_dashboard on HexDocs', link: 'https://hexdocs.pm/durable_dashboard' }, + ], + }, + ], + }), + ], +}); diff --git a/site/og/og.html b/site/og/og.html new file mode 100644 index 0000000..ce7f85a --- /dev/null +++ b/site/og/og.html @@ -0,0 +1,114 @@ + + + + + +Durable social card + + + + + +
+
+ + Durable +
+
+ + WaveZync +
+
+ +
+ + + plan + + + + + search + read_docs + + + + + draft + + review + waiting for you + + send +
+ +

+ Resilient, Reliable, Resumable + + workflows for Elixir + + +

+ + diff --git a/site/package.json b/site/package.json new file mode 100644 index 0000000..203a231 --- /dev/null +++ b/site/package.json @@ -0,0 +1,28 @@ +{ + "name": "durable-site", + "private": true, + "type": "module", + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "check": "astro check", + "deploy": "astro build && wrangler deploy", + "preview:cf": "astro build && wrangler dev" + }, + "dependencies": { + "@astrojs/markdown-remark": "^7.3.4", + "@astrojs/markdown-satteri": "0.4.5", + "@astrojs/starlight": "0.42.6", + "@fontsource-variable/sora": "5.3.0", + "@fontsource/geist-mono": "5.3.0", + "@lucide/astro": "1.61.0", + "astro": "7.4.2" + }, + "devDependencies": { + "@astrojs/check": "^0.9.12", + "@types/node": "^24.19.2", + "typescript": "^6.0.3", + "wrangler": "^4.151.3" + } +} diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml new file mode 100644 index 0000000..1736bd2 --- /dev/null +++ b/site/pnpm-lock.yaml @@ -0,0 +1,5273 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@astrojs/markdown-remark': + specifier: ^7.3.4 + version: 7.3.4 + '@astrojs/markdown-satteri': + specifier: 0.4.5 + version: 0.4.5 + '@astrojs/starlight': + specifier: 0.42.6 + version: 0.42.6(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))(typescript@6.0.3) + '@fontsource-variable/sora': + specifier: 5.3.0 + version: 5.3.0 + '@fontsource/geist-mono': + specifier: 5.3.0 + version: 5.3.0 + '@lucide/astro': + specifier: 1.61.0 + version: 1.61.0(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)) + astro: + specifier: 7.4.2 + version: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + devDependencies: + '@astrojs/check': + specifier: ^0.9.12 + version: 0.9.12(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3) + '@types/node': + specifier: ^24.19.2 + version: 24.19.2 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + wrangler: + specifier: ^4.151.3 + version: 4.151.3(@types/node@24.19.2) + +packages: + + '@astrojs/astro2tsx@0.1.3': + resolution: {integrity: sha512-GMDC7Eo0myBUA/QLBl0u+OcegJ8LiBhccmNZR34KmprQNP8gQUJlWlOOZWUsxNA2rNS6GuPYcGDyLoPnjmn4/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@astrojs/check@0.9.12': + resolution: {integrity: sha512-hazpqxIfZWj2VhyPyR0pOEQ/IhFDM/2nIApL96zMXABdD8NrUKYDmhxTy7h+drTDl9MQG/Sd1ET/4amadVJUUA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 || ^6.0.0 + + '@astrojs/compiler-binding-android-arm64@0.5.2': + resolution: {integrity: sha512-kckIxon6Rm/Bxzh9mGPYpRRqUbToUQoHptCmpMmE+Yt0Xumq8CqrKUidyYhrBsrHVO7bxuRzzWUUqvpf+iYceQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@astrojs/compiler-binding-darwin-arm64@0.5.2': + resolution: {integrity: sha512-1ZG5Ar3dD8HtodX9XH1mRmE0qBXZlvjYXSFfpgFwocqfWnvhFuqtGUNseL8wgfImiRMztIjpQqlogQFQQtgiag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@astrojs/compiler-binding-darwin-x64@0.5.2': + resolution: {integrity: sha512-+kl35S7hiHJ2cb7eujwEsPFYYuSgE11uEE2Z20lAJ+undpgulMcW+weQqFPOSSZccEKHOiLIY+kQHkb4e4092w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@astrojs/compiler-binding-linux-arm64-gnu@0.5.2': + resolution: {integrity: sha512-BqlR0EHNQLPLwgL9+xogjsAc7zGf0cHho2CPdhv0P1yqbVMwGVaGAqrANP6VYAXCqSC43AF4Czcxc2n+oqdesg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@astrojs/compiler-binding-linux-arm64-musl@0.5.2': + resolution: {integrity: sha512-GRGyby3AZWw5d6JQzidyxPyvGgHWsSusrpgKyFVpDTKctABF7L3Pd5V1cRJbV36/rcu+Eh292/wL7pF7MkmGkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@astrojs/compiler-binding-linux-x64-gnu@0.5.2': + resolution: {integrity: sha512-9XAqGTMQAtIslMsjK3xdyY6OI9d59OZqcLBB6pvD/DcoR0daYswfrKx2azdDERDY4AqAnWPC7odVM1BmxYv3Vw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@astrojs/compiler-binding-linux-x64-musl@0.5.2': + resolution: {integrity: sha512-jOViewGeTh9bSfS8vK72ECxoy2yvmA+Pd/ZcEvBI5c7+7IcfHwZ5qA4L9fRYuOhSrAifvQ2dV4vm1XAtloaWBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@astrojs/compiler-binding-wasm32-wasi@0.5.2': + resolution: {integrity: sha512-Z7p64doar1uvR5C9Xs6j1CV9lGlPVQX7OQ2aAtZ/xKC5aGS6GB13nyc2UfQXTQLvZrvVwsyaflTQy6ziY5Bekw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@astrojs/compiler-binding-win32-arm64-msvc@0.5.2': + resolution: {integrity: sha512-Tr13bh+ahTWsjXjzctK7pFpWV+dUU4FtBfETlR7gO+ueex0F+RDch7eRr0YfKysaRhk9tWm14lsCJ5uWyFPNHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@astrojs/compiler-binding-win32-x64-msvc@0.5.2': + resolution: {integrity: sha512-SfKkI+jOQYLh6wojPvVPV0lFfQnxisweN9B+qCzRvZp7DHAuGif8Y0WcC5PUgN4jb8VKy57LggQDtggR46Du1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@astrojs/compiler-binding@0.5.2': + resolution: {integrity: sha512-lEn76+0JcMQ5RDXU0wSMWJg2ZppiZvSULpghC29cfv4o9bhvWFDbQjsCtvjjXN9iVLFQ7fL3wTR2L2UU13mP8g==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@astrojs/compiler-rs@0.5.2': + resolution: {integrity: sha512-IvwYLB8t1M86rKO4oPdBi9GP4gzXcgrVlNgocjwos1jeeUuEIV8d9Crn1PvYD/5IKteWOxpIHomf7e8iYlkE+Q==} + engines: {node: '>=22.12.0'} + + '@astrojs/internal-helpers@0.13.0': + resolution: {integrity: sha512-20jxQqnSmpskcGyad7N5l6Xf1gz0UCa6lNde44bEBdaXGpncEYfAZJ142r2ZgzBaG4dUyzGmhqZWv1INU2eiHQ==} + + '@astrojs/language-server@2.17.3': + resolution: {integrity: sha512-QIAFu1e/4quJMTPdmBOm+ZPXc5NDGZE4/YQjgR3EgjhGLl/tdidaWJDr5WmO2lesVc+BW1qN/xNBURmuePDG2A==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + + '@astrojs/markdown-remark@7.3.4': + resolution: {integrity: sha512-AB8S4EQKSryzH624iMDtvC+1AD5nSPzYpCXxc7e1H5ydXhv9B5Td2QfCPA0JyEwqsJpsIsPlW0iOqiy1imdqYw==} + + '@astrojs/markdown-satteri@0.4.5': + resolution: {integrity: sha512-0IeGdoFbv0f+442KJhYS44Wg8F3MuHmRsxIEYuFyqkjRubc6dPBFZ7azor5t4AeXLQoT5A5h9HyViKpd70Dl9w==} + + '@astrojs/mdx@8.1.1': + resolution: {integrity: sha512-jEJUJsO2KqmKfBXaKeDHDCCj+Kerj1Fj+XndHznF9wxahvs+1onYCBeKmieM28N2+uA6mW57DOQQw5YaDLdBnA==} + engines: {node: '>=22.23.4'} + peerDependencies: + '@astrojs/markdown-remark': ^7.3.0 + '@astrojs/markdown-satteri': ^0.4.0 + astro: ^7.2.10 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + + '@astrojs/prism@4.1.1': + resolution: {integrity: sha512-sXlAXJX6t4QfuLg+CuCDzpg7NoxWcyb4paFprgtFppLeisCBmh935h+tJ5CWXfsXEoW2IDy/ihbRMtiu28Chjw==} + engines: {node: '>=22.23.4'} + + '@astrojs/sitemap@3.7.4': + resolution: {integrity: sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==} + + '@astrojs/starlight@0.42.6': + resolution: {integrity: sha512-Cfs7GdgzgNRCauDxQVsFUVL1thrGHK/rQdbv/SURv/xhGBXx+j5ypOHW9ENPraQxbIzUC8KAnJV7L9mvEVRuyQ==} + peerDependencies: + '@astrojs/markdown-remark': ^7.3.0 + astro: ^7.2.10 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + + '@astrojs/telemetry@3.4.1': + resolution: {integrity: sha512-SMkvMsGOpM0FMAoT5pzhgI3LZC0JSPWf7Evwop+fZ3N6UkusPM7lI+sOJjMNI5OJrVoiei1/AGo1cY7sikTc5A==} + engines: {node: '>=22.23.4'} + + '@astrojs/yaml2ts@0.2.4': + resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@bruits/satteri-darwin-arm64@0.10.5': + resolution: {integrity: sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==} + cpu: [arm64] + os: [darwin] + + '@bruits/satteri-darwin-x64@0.10.5': + resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} + cpu: [x64] + os: [darwin] + + '@bruits/satteri-linux-arm64-gnu@0.10.5': + resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} + cpu: [arm64] + os: [linux] + + '@bruits/satteri-linux-arm64-musl@0.10.5': + resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} + cpu: [arm64] + os: [linux] + + '@bruits/satteri-linux-x64-gnu@0.10.5': + resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} + cpu: [x64] + os: [linux] + + '@bruits/satteri-linux-x64-musl@0.10.5': + resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} + cpu: [x64] + os: [linux] + + '@bruits/satteri-wasm32-wasi@0.10.5': + resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@bruits/satteri-win32-arm64-msvc@0.10.5': + resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} + cpu: [arm64] + os: [win32] + + '@bruits/satteri-win32-x64-msvc@0.10.5': + resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} + cpu: [x64] + os: [win32] + + '@capsizecss/unpack@4.0.1': + resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} + engines: {node: '>=18'} + + '@clack/core@1.5.1': + resolution: {integrity: sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==} + engines: {node: '>= 20.12.0'} + + '@clack/prompts@1.8.1': + resolution: {integrity: sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==} + engines: {node: '>= 20.12.0'} + + '@cloudflare/kv-asset-handler@0.5.0': + resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} + engines: {node: '>=22.0.0'} + + '@cloudflare/unenv-preset@2.16.2': + resolution: {integrity: sha512-JBP1+Z7ZSNG/d4mRP+y8VC5dka3tZVMLEZRvS+rzQ4DGV1EoxRFQckcJTTkXbHSQiTj0DtNI01Zwb/V2fX0mvQ==} + peerDependencies: + unenv: 2.0.0-rc.24 + workerd: '>1.20260305.0 <2.0.0-0' + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/workerd-darwin-64@1.20261019.1': + resolution: {integrity: sha512-5ZILbAta/fBQvhmAYeCE7dKMMYIr7N9wJEX50fEGLKSIwGtvT0HzSfHNIK/O7cBQ4gHQ2WfIiPClvwcye6E0fA==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20261019.1': + resolution: {integrity: sha512-cww2Ab6lVMxpTiEEjKmPI58p5EMo0vYTZSH+3WkqXJdQgc3ES66GuL247+U2B2YWajhhu2tqj7jySrXneU749g==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20261019.1': + resolution: {integrity: sha512-4++VRi9vkQROYqrpZYOixIJuVDmujkwrT4kszsxNFlvcmsX6Mr2GumvxIN3gIixS3vJUh3Umdtkthqj5X0S3Xw==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20261019.1': + resolution: {integrity: sha512-75PVtJOwfjScQ53sbLtQXI7D8yP1c21t+WEUPaYbqkzaz4ZqfR5wAd+zuWs8G5Q7kOj2SQIvEfY5Sn8Y+UVrnA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20261019.1': + resolution: {integrity: sha512-z49fvKTETMCnG6wnMcQwxx9CpryFceiKz04FRjq26EkhCyzRNJ6c3UXhyZz3r5f1CXnnBZc5DcU8ZouPkUJCqw==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@ctrl/tinycolor@4.2.1': + resolution: {integrity: sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==} + engines: {node: '>=14'} + + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/css-parser@0.4.1': + resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + + '@emnapi/core@1.11.3': + resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} + + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + + '@emnapi/wasi-threads@1.2.3': + resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} + + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@expressive-code/core@0.44.3': + resolution: {integrity: sha512-pffktF0TJoxC08dgNcutl/0LcSnTrjF6vXR39qVpwZ0EyxpwO9zjI7dbni6sO7w3yHpRBO0voLFvhzB+EPJRsA==} + + '@expressive-code/plugin-frames@0.44.3': + resolution: {integrity: sha512-ysW4VXk9vXEliA99Ur6ApUepVtx74sPolp6o/j45BRjZQoL5O6kXKMhSP4koQLih8HbC5B3ImIvO+HKKhkv/oA==} + + '@expressive-code/plugin-shiki@0.44.3': + resolution: {integrity: sha512-jAibAZPG7lDmi61EFJADZjoSZzjHiwZZdbbgR/mTlWXM4ON/Pyo/9tB2vrqQNKylsci6jqtCi6idrwqQXF53xA==} + + '@expressive-code/plugin-text-markers@0.44.3': + resolution: {integrity: sha512-4Ae2xRSDV5kdWPsi40xWbOtoihbzM0zLVjQKkDAnD5KzFXl+6/kd+VhuWOlTRVaJ5cqGk++vCbAaf0MR1XbZlw==} + + '@fontsource-variable/sora@5.3.0': + resolution: {integrity: sha512-h8kHta4Z8SkfUGeI82TUy1n3rbrKpBRGwuk4t4qCwto5oEHxlbOFD2yGP+Df5fbmTXwKGn+o667vYp0E4K8Whw==} + + '@fontsource/geist-mono@5.3.0': + resolution: {integrity: sha512-UtJ1BBBCVpMYdIcW7nEB45UAoAw5M53ZXs2t0ciPW+IokuAAIc56M8+kW5tXbRJCTpDw4XTtU7proT6NdQAHTg==} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.35.5': + resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.5': + resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.5': + resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.4': + resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.4': + resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.4': + resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.3.4': + resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.3.4': + resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.3.4': + resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.3.4': + resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.3.4': + resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.35.5': + resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.35.5': + resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.35.5': + resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.35.5': + resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.35.5': + resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.35.5': + resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.35.5': + resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.35.5': + resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.35.5': + resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.5': + resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.5': + resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.5': + resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.5': + resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@lucide/astro@1.61.0': + resolution: {integrity: sha512-XoFZGoHjYtnDTuOQ4b105IO+WUCh8rzitIgBIrkOcdC1PRmsvLx+fwnrCRHiZ1JfbA36r/jAMxQL/HeyRqKJjQ==} + peerDependencies: + astro: ^4 || ^5 || ^6 || ^7 + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@napi-rs/wasm-runtime@1.2.4': + resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@oxc-project/types@0.155.0': + resolution: {integrity: sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==} + + '@pagefind/darwin-arm64@1.5.2': + resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.5.2': + resolution: {integrity: sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==} + cpu: [x64] + os: [darwin] + + '@pagefind/default-ui@1.5.2': + resolution: {integrity: sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg==} + + '@pagefind/freebsd-x64@1.5.2': + resolution: {integrity: sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==} + cpu: [x64] + os: [freebsd] + + '@pagefind/linux-arm64@1.5.2': + resolution: {integrity: sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.5.2': + resolution: {integrity: sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-arm64@1.5.2': + resolution: {integrity: sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==} + cpu: [arm64] + os: [win32] + + '@pagefind/windows-x64@1.5.2': + resolution: {integrity: sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==} + cpu: [x64] + os: [win32] + + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + + '@rolldown/binding-android-arm-eabi@1.2.15': + resolution: {integrity: sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.15': + resolution: {integrity: sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.15': + resolution: {integrity: sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.15': + resolution: {integrity: sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.15': + resolution: {integrity: sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.15': + resolution: {integrity: sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.15': + resolution: {integrity: sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.2.15': + resolution: {integrity: sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.2.15': + resolution: {integrity: sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.2.15': + resolution: {integrity: sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.2.15': + resolution: {integrity: sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.2.15': + resolution: {integrity: sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.2.15': + resolution: {integrity: sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.15': + resolution: {integrity: sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.15': + resolution: {integrity: sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@shikijs/core@4.5.0': + resolution: {integrity: sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.5.0': + resolution: {integrity: sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==} + engines: {node: '>=20'} + + '@shikijs/engine-oniguruma@4.5.0': + resolution: {integrity: sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==} + engines: {node: '>=20'} + + '@shikijs/langs@4.5.0': + resolution: {integrity: sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.5.0': + resolution: {integrity: sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==} + engines: {node: '>=20'} + + '@shikijs/themes@4.5.0': + resolution: {integrity: sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==} + engines: {node: '>=20'} + + '@shikijs/types@4.5.0': + resolution: {integrity: sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==} + engines: {node: '>=20'} + + '@shikijs/vscode-textmate@10.1.0': + resolution: {integrity: sha512-cVBuhDQjBZaNMTwBquYfPydrUP+E3hE6oYGasx8h6ZrODIM7/r+gxLDXdd66oszbrggZHEntdE6j+5gYIVyMWQ==} + + '@sindresorhus/is@7.2.0': + resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} + engines: {node: '>=18'} + + '@speed-highlight/core@1.2.24': + resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==} + + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.14': + resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@24.19.2': + resolution: {integrity: sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} + + '@volar/kit@2.4.28': + resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/language-server@2.4.28': + resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==} + + '@volar/language-service@2.4.28': + resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-i18n@4.2.0: + resolution: {integrity: sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==} + peerDependencies: + ajv: ^8.0.0-beta.0 + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + am-i-vibing@0.5.0: + resolution: {integrity: sha512-KLcsDhqf1XRrJmJr+9I/C0EX2K+sGrAGZFgkmd84c8TJO9zJBu+/kFInjazu1KfJWFhWDKdRWkpBzEs7s35DVA==} + hasBin: true + + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} + engines: {node: '>=12'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + astro-expressive-code@0.44.3: + resolution: {integrity: sha512-LUpQmmvzr90JXP5QIAopgdjlOKLuT3x0wlPAUpc4OZtPtFS8sbflPcGPpL/lG3pQuUCQV2CXUFgYNBYNu9tphA==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 + + astro@7.4.2: + resolution: {integrity: sha512-FAH4cdDlFaVnQGjazLTEIC5vJqGlo5XANc1wIbzQHIqAjJTll/RWTUs+SPNW1JdezG4YGxMZllaE5A41T2kzhA==} + engines: {node: '>=22.23.4', npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + peerDependencies: + '@astrojs/markdown-remark': ^7.3.0 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bcp-47@2.1.2: + resolution: {integrity: sha512-wsv86UuNFuPnVieKLyECTT+CP1WSAHeoIg5P3xu2kA9Z+7fVPoKt7dxzSeEhtJel0AI+NW3fIW3KtTKQKUCngg==} + + blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} + + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + css-select@6.0.0: + resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} + + css-selector-parser@3.3.0: + resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@7.0.0: + resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devalue@6.0.3: + resolution: {integrity: sha512-3woMEITftG1wKeO/4d/QXH1DVKctTSZg3jNGPpjp9hNr5Hos8MCFF5McTML5ZtgKDObm2R591B0spRp2IVernA==} + engines: {node: '>=18'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + + es-module-lexer@3.0.4: + resolution: {integrity: sha512-BldNY5mwkVu+cQ5Ymn3e6hB9Sx8XHx4ZevWbiUyZbfKxJxYO27Hf0wfzkxIaD5CAJMaGl3YspKELj0ff/7nCMA==} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.1: + resolution: {integrity: sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + expressive-code@0.44.3: + resolution: {integrity: sha512-7RGslhJTNt01pdn5I3QmVh5C8ZIiSm0A+ORQ9j9r39oOgJVKjn/7dXl9rMT/SqmFLE6pJkTYI7UjW0BxJnW7OQ==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + + fast-uri@3.1.9: + resolution: {integrity: sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==} + + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + fnv1a-64@0.1.2: + resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==} + + fontace@0.4.1: + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} + + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} + engines: {node: '>=20'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} + engines: {node: '>=18'} + + get-tsconfig@5.0.0-beta.6: + resolution: {integrity: sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==} + engines: {node: '>=20.20.0'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + + hast-util-format@1.1.0: + resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-body-ok-link@3.0.1: + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-minify-whitespace@1.0.1: + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + html-whitespace-sensitive-tag-names@3.0.1: + resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} + + http-cache-semantics@4.3.0: + resolution: {integrity: sha512-M5t5LlJpS1UHMjvwRQVdFHvPISGeLAxNcrWuJkeGh0KxsqCHZ1O3NXZU/8x7cD0BDcGW8kapxMKTvwlqrNkHkA==} + + i18next@26.5.4: + resolution: {integrity: sha512-Wg0O1u2xmnsve9gICDwGekLkMe9SIC7+ZiuLYfWUGb/A3TQdRKygQ4OY9ros4raf5D66ZnW9JMrTDtGP2b8a7Q==} + peerDependencies: + typescript: ^5 || ^6 || ^7 + peerDependenciesMeta: + typescript: + optional: true + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@4.0.0: + resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==} + engines: {node: '>=20'} + hasBin: true + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@11.5.3: + resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} + engines: {node: 20 || >=22} + + magic-string@1.4.3: + resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==} + + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-directive@3.1.1: + resolution: {integrity: sha512-Gqpa3MHorXYEZ0VfbroyvBlVKUfz371V6mIERqOYMcb0W1D3LwmFq1ZW4O2TDrbn+4ZmGLwMWeFRJgYZ+bc5fQ==} + + mdast-util-find-and-replace@3.0.3: + resolution: {integrity: sha512-xPgpDNl0/OXHsI7TlaIs22lWnH3KlpvZdXG1ET/m/YT2Hhdkx8lJV4kLphE6l9simyM4KPDFBwas08BgEob6Jw==} + + mdast-util-from-markdown@2.1.0: + resolution: {integrity: sha512-KRLgmPaP2H1ul2bpoJkOS+9pAcDAAj9Nu1mqLnh8NLeJG5tlvj42TH80PIGBpROWlRXLk0lDrWNuZCFy/tsB4A==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.1: + resolution: {integrity: sha512-OuJHqvr455pwu2OaOrir7dbzqs4jlWKOtlu9L6GjcIjjQwNyw02VntQsr/Ek6/A13vgnXfUhBekWRUP1OkNivw==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.2.0: + resolution: {integrity: sha512-2Jn/ADrHFFyyniBMi0bncTbJqU78K3/TEYvzvwrWWzD9MYPUa/Gm4r3nOeKFQg/PDM5BsbDYdc8ackW4NTY6NA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + micromark-core-commonmark@2.0.4: + resolution: {integrity: sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==} + + micromark-extension-directive@4.0.0: + resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.2: + resolution: {integrity: sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.1.0: + resolution: {integrity: sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-edit-map@1.0.0: + resolution: {integrity: sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.3: + resolution: {integrity: sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==} + + micromark@4.0.3: + resolution: {integrity: sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==} + + miniflare@5.20261019.1-beta: + resolution: {integrity: sha512-1n7MN2UqZnPniyYAqNuV1YEAaja66ozKGVCc5ZTmYQhTubnoAwGLccwb+ZWYLOajuw3pOaJ70u//bZMuURlRew==} + engines: {node: '>=22.0.0'} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-mock-http@1.0.5: + resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + obug@3.0.0: + resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} + engines: {node: '>=12.20.0'} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} + + p-limit@7.3.3: + resolution: {integrity: sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==} + engines: {node: '>=20'} + + p-queue@9.3.5: + resolution: {integrity: sha512-Lki/zhXFVmDhesBUn/yHRLW9Bte7mE7xoFHzTR8sIomV7a2z+LxYAPkGvdfidNiu4fKSfjtawixxSHcZci5QcQ==} + engines: {node: '>=20'} + + p-timeout@7.0.2: + resolution: {integrity: sha512-prbX4Z3YszrFNgH+MW5Zoeq3baXrMtP/MQnFeET90UB/GtGcGDQ5Usg9OCy6ETjTTntOw1SL2z9fMPUppN3Guw==} + engines: {node: '>=20'} + + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + + pagefind@1.5.2: + resolution: {integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==} + hasBin: true + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + postcss-nested@7.0.2: + resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@7.1.7: + resolution: {integrity: sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==} + engines: {node: '>=4'} + + postcss@8.5.31: + resolution: {integrity: sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==} + engines: {node: ^10 || ^12 || >=14} + + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} + engines: {node: '>=14'} + hasBin: true + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-ancestry@0.1.0: + resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} + engines: {node: '>=18.0.0'} + + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + rehype-expressive-code@0.44.3: + resolution: {integrity: sha512-vaVuQPobFXvmtcHXQ5uqXZlzuuPnLyIuZcX/03sX1U/Qfj9fZrPYI9w66OSr/PUx6alzRYmreEwgYBbsVx8HsA==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + remark-directive@4.0.0: + resolution: {integrity: sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-smartypants@3.0.3: + resolution: {integrity: sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + rolldown@1.2.15: + resolution: {integrity: sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + satteri@0.10.5: + resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} + + sax@1.6.1: + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + engines: {node: '>=11.0.0'} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.35.5: + resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + shiki@4.5.0: + resolution: {integrity: sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==} + engines: {node: '>=20'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} + hasBin: true + + smol-toml@1.9.1: + resolution: {integrity: sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==} + engines: {node: '>= 18'} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + source-map@0.8.0: + resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + svgo@4.1.0: + resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==} + engines: {node: '>=16'} + hasBin: true + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tinyclip@1.0.3: + resolution: {integrity: sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==} + engines: {node: ^16.14.0 || >= 17.3.0} + + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyps@0.5.1: + resolution: {integrity: sha512-B6Ykif5HflC3AdDkS4Zst/2muYVfeXoVMy+KorqH80s/1x4vunIORpNySH681X7fjj+dFM9MDKD6/Hsccjb87Q==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + ultrahtml@1.7.0: + resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + undici@7.29.1: + resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} + engines: {node: '>=20.18.1'} + + undici@8.12.3: + resolution: {integrity: sha512-+fdndUTwBP86cVjihTp21hZHo7d6oj1c/47XPA3lL8mM0XHs+C4EkcjmgRsFnFk2f/UONGDy9ItBItmXsLOQHw==} + engines: {node: '>=22.19.0'} + + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unifont@1.0.3: + resolution: {integrity: sha512-XGnEwj5sWdCbiBX01mWLSBncS0yMRjnLygau3IfdOlfjMacNIQvTGW4VH7pWBq+gGWArfSef/CensMLjMmIr/A==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + unstorage@1.17.6: + resolution: {integrity: sha512-gjKtcmn/KwZuJZO9o2sc0esAQnhmTw0LviDHwevTXbJMYs0dRTp8ZEEWXHU0vTpzbN3cA0yxlTeyXssMp3zDqw==} + 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 || ^11.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 + + url-extras@0.1.0: + resolution: {integrity: sha512-8tzwTeXFPuX/5PHuCDQE5Dd9Ts4rwoq2t9aIT+HS4iAVpmj5l4Ao7Q+BuuFjvWRqrLswBhQDk8O96ZicgCqQqw==} + engines: {node: '>=20'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + verkit@0.5.0: + resolution: {integrity: sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==} + engines: {node: '>=18.12.0'} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@8.3.5: + resolution: {integrity: sha512-z1YpjieJ9g0ebTmQpLBv/oq9E3F9EIlOe+7LahW8SrE3LTiG3udBRUXQOlYXP9b+IC2q2phHeVxj9xGlw34OEQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.7.1 || ^0.8.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 + + vitefu@1.1.3: + resolution: {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 + + volar-service-css@0.0.71: + resolution: {integrity: sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.71: + resolution: {integrity: sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.71: + resolution: {integrity: sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.71: + resolution: {integrity: sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.71: + resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.71: + resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-yaml@0.0.71: + resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.10: + resolution: {integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==} + + vscode-html-languageservice@5.6.2: + resolution: {integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-jsonrpc@9.0.3: + resolution: {integrity: sha512-qETYf9PCl1lVfwR+oBmMfc4vP2nqLNA35ABxorw3j06+xlKRgDVxbLgKm4Y/xPL0YWdeDjLoI4ImICIT3nB0zQ==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-protocol@3.18.4: + resolution: {integrity: sha512-CCXbyr99dafRJzJH/0Ryk7ly5T8XPmSR0//OuF2w4m+9JiOin7zcAT5iET8GRE7Z9taFBejb3GbM0a0mbjdbrg==} + + vscode-languageserver-textdocument@1.0.15: + resolution: {integrity: sha512-Gsfr9S8LU3S6885cS+NaleasJ0n3V5y/SOTqHCifQiXWFw3G9w9/YItDfwHrlCz+dSZWWZ8ilYVMcJe7Sz7Sxw==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver-types@3.18.4: + resolution: {integrity: sha512-nQsacoiijvl0fRf2q28uFDrAVwRhdCa3QveiF7/CX0r18mLR5FU/1WskSsCKOjmEbtteKUnY8x8Yzxop+k0zwg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + workerd@1.20261019.1: + resolution: {integrity: sha512-UUYRUq/7DmeCl11YriNbcVbjUZVLtt8uuCXFu+nz77hGFf8d4DEVXoCYtnA+MlBatE4+wxoj47DVqzK3xGBAiw==} + engines: {node: '>=16'} + hasBin: true + + wrangler@4.151.3: + resolution: {integrity: sha512-mzPQLmkAhZUV7CdiAhE+hiIAJlS9xPL6vZe1B8oQFuWxFu7nmQnvHAVjcAcabwSGkXFXH9uspzXwHOFrfbQmqQ==} + engines: {node: '>=22.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^5.20261019.1 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaml-language-server@1.23.0: + resolution: {integrity: sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==} + hasBin: true + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + + youch@4.1.0-beta.10: + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} + + zod@4.6.7: + resolution: {integrity: sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@astrojs/astro2tsx@0.1.3(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/runtime' + + '@astrojs/check@0.9.12(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3)': + dependencies: + '@astrojs/language-server': 2.17.3(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3) + chokidar: 5.0.0 + kleur: 4.1.5 + typescript: 6.0.3 + yargs: 18.2.0 + transitivePeerDependencies: + - '@emnapi/runtime' + - prettier + - prettier-plugin-astro + + '@astrojs/compiler-binding-android-arm64@0.5.2': + optional: true + + '@astrojs/compiler-binding-darwin-arm64@0.5.2': + optional: true + + '@astrojs/compiler-binding-darwin-x64@0.5.2': + optional: true + + '@astrojs/compiler-binding-linux-arm64-gnu@0.5.2': + optional: true + + '@astrojs/compiler-binding-linux-arm64-musl@0.5.2': + optional: true + + '@astrojs/compiler-binding-linux-x64-gnu@0.5.2': + optional: true + + '@astrojs/compiler-binding-linux-x64-musl@0.5.2': + optional: true + + '@astrojs/compiler-binding-wasm32-wasi@0.5.2': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + optional: true + + '@astrojs/compiler-binding-win32-arm64-msvc@0.5.2': + optional: true + + '@astrojs/compiler-binding-win32-x64-msvc@0.5.2': + optional: true + + '@astrojs/compiler-binding@0.5.2': + optionalDependencies: + '@astrojs/compiler-binding-android-arm64': 0.5.2 + '@astrojs/compiler-binding-darwin-arm64': 0.5.2 + '@astrojs/compiler-binding-darwin-x64': 0.5.2 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.5.2 + '@astrojs/compiler-binding-linux-arm64-musl': 0.5.2 + '@astrojs/compiler-binding-linux-x64-gnu': 0.5.2 + '@astrojs/compiler-binding-linux-x64-musl': 0.5.2 + '@astrojs/compiler-binding-wasm32-wasi': 0.5.2 + '@astrojs/compiler-binding-win32-arm64-msvc': 0.5.2 + '@astrojs/compiler-binding-win32-x64-msvc': 0.5.2 + + '@astrojs/compiler-rs@0.5.2': + dependencies: + '@astrojs/compiler-binding': 0.5.2 + + '@astrojs/internal-helpers@0.13.0': + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + picomatch: 4.0.7 + retext-smartypants: 6.2.0 + shiki: 4.5.0 + smol-toml: 1.9.1 + unified: 11.0.5 + yaml: 2.9.1 + + '@astrojs/language-server@2.17.3(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3)': + dependencies: + '@astrojs/astro2tsx': 0.1.3(@emnapi/runtime@1.11.3) + '@astrojs/yaml2ts': 0.2.4 + '@volar/kit': 2.4.28(typescript@6.0.3) + '@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.17 + volar-service-css: 0.0.71(@volar/language-service@2.4.28) + volar-service-emmet: 0.0.71(@volar/language-service@2.4.28) + volar-service-html: 0.0.71(@volar/language-service@2.4.28) + volar-service-prettier: 0.0.71(@volar/language-service@2.4.28)(prettier@3.9.10) + volar-service-typescript: 0.0.71(@volar/language-service@2.4.28) + volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28) + volar-service-yaml: 0.0.71(@volar/language-service@2.4.28) + vscode-html-languageservice: 5.6.2 + vscode-uri: 3.2.0 + optionalDependencies: + prettier: 3.9.10 + transitivePeerDependencies: + - '@emnapi/runtime' + - typescript + + '@astrojs/markdown-remark@7.3.4': + dependencies: + '@astrojs/internal-helpers': 0.13.0 + '@astrojs/prism': 4.1.1 + '@mdx-js/mdx': 3.1.1 + acorn: 8.19.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.3 + source-map: 0.8.0 + 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 + transitivePeerDependencies: + - supports-color + + '@astrojs/markdown-satteri@0.4.5': + dependencies: + '@astrojs/internal-helpers': 0.13.0 + '@astrojs/prism': 4.1.1 + github-slugger: 2.0.0 + satteri: 0.10.5 + + '@astrojs/mdx@8.1.1(@astrojs/markdown-remark@7.3.4)(@astrojs/markdown-satteri@0.4.5)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))': + dependencies: + '@astrojs/internal-helpers': 0.13.0 + '@astrojs/markdown-satteri': 0.4.5 + astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + es-module-lexer: 3.0.4 + optionalDependencies: + '@astrojs/markdown-remark': 7.3.4 + + '@astrojs/prism@4.1.1': + dependencies: + prismjs: 1.30.0 + + '@astrojs/sitemap@3.7.4': + dependencies: + sitemap: 9.0.1 + zod: 4.6.7 + + '@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))(typescript@6.0.3)': + dependencies: + '@astrojs/markdown-satteri': 0.4.5 + '@astrojs/mdx': 8.1.1(@astrojs/markdown-remark@7.3.4)(@astrojs/markdown-satteri@0.4.5)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)) + '@astrojs/sitemap': 3.7.4 + '@pagefind/default-ui': 1.5.2 + '@types/hast': 3.0.5 + '@types/js-yaml': 4.0.9 + '@types/mdast': 4.0.4 + astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + astro-expressive-code: 0.44.3(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)) + bcp-47: 2.1.2 + 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.5.4(typescript@6.0.3) + js-yaml: 4.3.2 + klona: 2.0.6 + magic-string: 1.4.3 + mdast-util-directive: 3.1.1 + mdast-util-to-markdown: 2.2.0 + mdast-util-to-string: 4.0.0 + pagefind: 1.5.2 + remark-directive: 4.0.0 + satteri: 0.10.5 + ultrahtml: 1.7.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + optionalDependencies: + '@astrojs/markdown-remark': 7.3.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@astrojs/telemetry@3.4.1': + dependencies: + ci-info: 4.4.0 + dset: 3.1.4 + is-docker: 4.0.0 + package-manager-detector: 1.9.0 + + '@astrojs/yaml2ts@0.2.4': + dependencies: + yaml: 2.9.1 + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bruits/satteri-darwin-arm64@0.10.5': + optional: true + + '@bruits/satteri-darwin-x64@0.10.5': + optional: true + + '@bruits/satteri-linux-arm64-gnu@0.10.5': + optional: true + + '@bruits/satteri-linux-arm64-musl@0.10.5': + optional: true + + '@bruits/satteri-linux-x64-gnu@0.10.5': + optional: true + + '@bruits/satteri-linux-x64-musl@0.10.5': + optional: true + + '@bruits/satteri-wasm32-wasi@0.10.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@bruits/satteri-win32-arm64-msvc@0.10.5': + optional: true + + '@bruits/satteri-win32-x64-msvc@0.10.5': + optional: true + + '@capsizecss/unpack@4.0.1': + dependencies: + fontkitten: 1.0.3 + + '@clack/core@1.5.1': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@clack/prompts@1.8.1': + dependencies: + '@clack/core': 1.5.1 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@cloudflare/kv-asset-handler@0.5.0': {} + + '@cloudflare/unenv-preset@2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261019.1)': + dependencies: + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20261019.1 + + '@cloudflare/workerd-darwin-64@1.20261019.1': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20261019.1': + optional: true + + '@cloudflare/workerd-linux-64@1.20261019.1': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20261019.1': + optional: true + + '@cloudflare/workerd-windows-64@1.20261019.1': + optional: true + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@ctrl/tinycolor@4.2.1': {} + + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-abbreviation@2.1.8': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-parser@0.4.1': + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + + '@emmetio/html-matcher@1.3.0': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/scanner@1.0.4': {} + + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} + + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.11.3': + dependencies: + '@emnapi/wasi-threads': 1.2.3 + tslib: 2.8.1 + + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.3': + dependencies: + tslib: 2.8.1 + + '@esbuild/aix-ppc64@0.28.2': + optional: true + + '@esbuild/android-arm64@0.28.2': + optional: true + + '@esbuild/android-arm@0.28.2': + optional: true + + '@esbuild/android-x64@0.28.2': + optional: true + + '@esbuild/darwin-arm64@0.28.2': + optional: true + + '@esbuild/darwin-x64@0.28.2': + optional: true + + '@esbuild/freebsd-arm64@0.28.2': + optional: true + + '@esbuild/freebsd-x64@0.28.2': + optional: true + + '@esbuild/linux-arm64@0.28.2': + optional: true + + '@esbuild/linux-arm@0.28.2': + optional: true + + '@esbuild/linux-ia32@0.28.2': + optional: true + + '@esbuild/linux-loong64@0.28.2': + optional: true + + '@esbuild/linux-mips64el@0.28.2': + optional: true + + '@esbuild/linux-ppc64@0.28.2': + optional: true + + '@esbuild/linux-riscv64@0.28.2': + optional: true + + '@esbuild/linux-s390x@0.28.2': + optional: true + + '@esbuild/linux-x64@0.28.2': + optional: true + + '@esbuild/netbsd-arm64@0.28.2': + optional: true + + '@esbuild/netbsd-x64@0.28.2': + optional: true + + '@esbuild/openbsd-arm64@0.28.2': + optional: true + + '@esbuild/openbsd-x64@0.28.2': + optional: true + + '@esbuild/openharmony-arm64@0.28.2': + optional: true + + '@esbuild/sunos-x64@0.28.2': + optional: true + + '@esbuild/win32-arm64@0.28.2': + optional: true + + '@esbuild/win32-ia32@0.28.2': + optional: true + + '@esbuild/win32-x64@0.28.2': + optional: true + + '@expressive-code/core@0.44.3': + dependencies: + '@ctrl/tinycolor': 4.2.1 + hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hastscript: 9.0.1 + postcss: 8.5.31 + postcss-nested: 7.0.2(postcss@8.5.31) + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + + '@expressive-code/plugin-frames@0.44.3': + dependencies: + '@expressive-code/core': 0.44.3 + + '@expressive-code/plugin-shiki@0.44.3': + dependencies: + '@expressive-code/core': 0.44.3 + shiki: 4.5.0 + + '@expressive-code/plugin-text-markers@0.44.3': + dependencies: + '@expressive-code/core': 0.44.3 + + '@fontsource-variable/sora@5.3.0': {} + + '@fontsource/geist-mono@5.3.0': {} + + '@img/colour@1.1.0': {} + + '@img/sharp-darwin-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.4 + optional: true + + '@img/sharp-darwin-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.4 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + optional: true + + '@img/sharp-linux-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.4 + optional: true + + '@img/sharp-linux-arm@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.4 + optional: true + + '@img/sharp-linux-ppc64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.4 + optional: true + + '@img/sharp-linux-riscv64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.4 + optional: true + + '@img/sharp-linux-s390x@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.4 + optional: true + + '@img/sharp-linux-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + optional: true + + '@img/sharp-wasm32@0.35.5': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-win32-arm64@0.35.5': + optional: true + + '@img/sharp-win32-ia32@0.35.5': + optional: true + + '@img/sharp-win32-x64@0.35.5': + optional: true + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@lucide/astro@1.61.0(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))': + dependencies: + astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdx': 2.0.14 + acorn: 8.19.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.1 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.19.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.4 + + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.4 + optional: true + + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.4 + optional: true + + '@oslojs/encoding@1.1.0': {} + + '@oxc-project/types@0.155.0': {} + + '@pagefind/darwin-arm64@1.5.2': + optional: true + + '@pagefind/darwin-x64@1.5.2': + optional: true + + '@pagefind/default-ui@1.5.2': {} + + '@pagefind/freebsd-x64@1.5.2': + optional: true + + '@pagefind/linux-arm64@1.5.2': + optional: true + + '@pagefind/linux-x64@1.5.2': + optional: true + + '@pagefind/windows-arm64@1.5.2': + optional: true + + '@pagefind/windows-x64@1.5.2': + optional: true + + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.6.5': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + + '@rolldown/binding-android-arm-eabi@1.2.15': + optional: true + + '@rolldown/binding-android-arm64@1.2.15': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.15': + optional: true + + '@rolldown/binding-darwin-x64@1.2.15': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.15': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.15': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.15': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.15': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.15': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.15': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.15': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.15': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.15': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.15': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.15': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@shikijs/core@4.5.0': + dependencies: + '@shikijs/primitive': 4.5.0 + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.1.0 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.1.0 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.1.0 + + '@shikijs/langs@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + + '@shikijs/primitive@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.1.0 + '@types/hast': 3.0.5 + + '@shikijs/themes@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + + '@shikijs/types@4.5.0': + dependencies: + '@shikijs/vscode-textmate': 10.1.0 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.1.0': {} + + '@sindresorhus/is@7.2.0': {} + + '@speed-highlight/core@1.2.24': {} + + '@tybys/wasm-util@0.10.4': + dependencies: + tslib: 2.8.1 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@1.0.9': {} + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/js-yaml@4.0.9': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.14': {} + + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@24.19.2': + dependencies: + undici-types: 7.24.6 + + '@types/sax@1.2.7': + dependencies: + '@types/node': 24.19.2 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@ungap/structured-clone@1.4.0': {} + + '@volar/kit@2.4.28(typescript@6.0.3)': + dependencies: + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 + typesafe-path: 0.2.2 + typescript: 6.0.3 + vscode-languageserver-textdocument: 1.0.15 + vscode-uri: 3.2.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/language-server@2.4.28': + 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.18.4 + vscode-languageserver-textdocument: 1.0.15 + vscode-uri: 3.2.0 + + '@volar/language-service@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + vscode-languageserver-protocol: 3.18.4 + vscode-languageserver-textdocument: 1.0.15 + vscode-uri: 3.2.0 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.2.0 + + '@vscode/emmet-helper@2.11.0': + dependencies: + emmet: 2.4.11 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.15 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + + '@vscode/l10n@0.0.18': {} + + acorn-jsx@5.3.2(acorn@8.19.0): + dependencies: + acorn: 8.19.0 + + acorn@8.19.0: {} + + ajv-draft-04@1.0.0(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-i18n@4.2.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.9 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + am-i-vibing@0.5.0: + dependencies: + process-ancestry: 0.1.0 + + ansi-regex@6.4.0: {} + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + astring@1.9.0: {} + + astro-expressive-code@0.44.3(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)): + dependencies: + astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + rehype-expressive-code: 0.44.3 + url-extras: 0.1.0 + + astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1): + dependencies: + '@astrojs/compiler-rs': 0.5.2 + '@astrojs/internal-helpers': 0.13.0 + '@astrojs/markdown-satteri': 0.4.5 + '@astrojs/telemetry': 3.4.1 + '@capsizecss/unpack': 4.0.1 + '@clack/prompts': 1.8.1 + '@oslojs/encoding': 1.1.0 + am-i-vibing: 0.5.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: 6.0.3 + diff: 9.0.0 + dset: 3.1.4 + es-module-lexer: 3.0.4 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.6 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.3.0 + jsonc-parser: 3.3.1 + magic-string: 1.4.3 + magicast: 0.5.5 + mrmime: 2.0.1 + neotraverse: 1.0.1 + obug: 3.0.0 + p-limit: 7.3.3 + p-queue: 9.3.5 + package-manager-detector: 1.9.0 + piccolore: 0.1.3 + picomatch: 4.0.7 + rolldown: 1.2.15 + shiki: 4.5.0 + smol-toml: 1.9.1 + svgo: 4.1.0 + tinyclip: 1.0.3 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 + tinyps: 0.5.1 + ultrahtml: 1.7.0 + unifont: 1.0.3 + unstorage: 1.17.6 + verkit: 0.5.0 + vite: 8.3.5(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + vitefu: 1.1.3(vite@8.3.5(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.6.7 + optionalDependencies: + '@astrojs/markdown-remark': 7.3.4 + sharp: 0.35.5(@types/node@24.19.2) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - aws4fetch + - db0 + - esbuild + - idb-keyval + - ioredis + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - uploadthing + - yaml + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + bcp-47-match@2.0.3: {} + + bcp-47@2.1.2: + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + + blake3-wasm@2.1.5: {} + + boolbase@1.0.0: {} + + ccount@2.0.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 + + ci-info@4.4.0: {} + + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + common-ancestor-path@2.0.0: {} + + cookie-es@1.2.3: {} + + cookie@1.1.1: {} + + cookie@2.0.1: {} + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + css-select@6.0.0: + dependencies: + boolbase: 1.0.0 + css-what: 7.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@3.3.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.2 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.2 + + css-what@7.0.0: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + defu@6.1.7: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + detect-libc@2.1.2: {} + + devalue@6.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@9.0.0: {} + + direction@2.0.1: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dset@3.1.4: {} + + emmet@2.4.11: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + + emoji-regex@10.6.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + error-stack-parser-es@1.0.5: {} + + es-module-lexer@3.0.4: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.19.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.28.2: + 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 + + escalade@3.2.0: {} + + escape-string-regexp@5.0.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.9 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.1: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + eventemitter3@5.0.4: {} + + expressive-code@0.44.3: + dependencies: + '@expressive-code/core': 0.44.3 + '@expressive-code/plugin-frames': 0.44.3 + '@expressive-code/plugin-shiki': 0.44.3 + '@expressive-code/plugin-text-markers': 0.44.3 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + + fast-uri@3.1.9: {} + + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + flattie@1.1.1: {} + + fnv1a-64@0.1.2: {} + + fontace@0.4.1: + dependencies: + fontkitten: 1.0.3 + + fontkitten@1.0.3: + dependencies: + tiny-inflate: 1.0.3 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.7.0: {} + + get-tsconfig@5.0.0-beta.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-slugger@2.0.0: {} + + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.5 + radix3: 1.1.2 + ufo: 1.6.4 + uncrypto: 0.1.3 + + hast-util-embedded@3.0.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-is-element: 3.0.0 + + hast-util-format@1.1.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-minify-whitespace: 1.0.1 + hast-util-phrasing: 3.0.1 + hast-util-whitespace: 3.0.0 + html-whitespace-sensitive-tag-names: 3.0.1 + unist-util-visit-parents: 6.0.2 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.5 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.2.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.5 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-minify-whitespace@1.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-has-property: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 + hast-util-is-element: 3.0.0 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.4.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.3.0 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.5 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + html-whitespace-sensitive-tag-names@3.0.1: {} + + http-cache-semantics@4.3.0: {} + + i18next@26.5.4(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 + + inline-style-parser@0.2.7: {} + + iron-webcrypto@1.2.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-docker@4.0.0: {} + + is-hexadecimal@2.0.1: {} + + is-plain-obj@4.1.0: {} + + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + jsonc-parser@2.3.1: {} + + jsonc-parser@3.3.1: {} + + kleur@4.1.5: {} + + klona@2.0.6: {} + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + 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 + + longest-streak@3.1.0: {} + + lru-cache@11.5.3: {} + + magic-string@1.4.3: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + magicast@0.5.5: + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + source-map-js: 1.2.2 + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + mdast-util-directive@3.1.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + micromark-util-character: 2.1.1 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@3.0.3: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.3 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.3 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.1.0 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.1 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.1.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.4.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.2.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-character: 2.1.1 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.28: {} + + mdn-data@2.27.1: {} + + micromark-core-commonmark@2.0.4: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.1.0 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-edit-map: 1.0.0 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-directive@4.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + parse-entities: 4.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.4 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-table@2.1.2: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.3 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.2 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.3 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.4 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.3 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-edit-map@1.0.0: + dependencies: + micromark-util-types: 2.0.3 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.9 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.3 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.3: {} + + micromark@4.0.3: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.4 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-edit-map: 1.0.0 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + transitivePeerDependencies: + - supports-color + + miniflare@5.20261019.1-beta(@types/node@24.19.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + sharp: 0.35.5(@types/node@24.19.2) + undici: 7.29.1 + workerd: 1.20261019.1 + ws: 8.21.0 + youch: 4.1.0-beta.10 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - utf-8-validate + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.20: {} + + neotraverse@1.0.1: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-fetch-native@1.6.7: {} + + node-mock-http@1.0.5: {} + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + obug@3.0.0: {} + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 + + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + + p-limit@7.3.3: + dependencies: + yocto-queue: 1.2.2 + + p-queue@9.3.5: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.2 + + p-timeout@7.0.2: {} + + package-manager-detector@1.9.0: {} + + pagefind@1.5.2: + 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 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-browserify@1.0.1: {} + + path-to-regexp@6.3.0: {} + + pathe@2.0.3: {} + + piccolore@0.1.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.7: {} + + postcss-nested@7.0.2(postcss@8.5.31): + dependencies: + postcss: 8.5.31 + postcss-selector-parser: 7.1.7 + + postcss-selector-parser@7.1.7: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.31: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + prettier@3.9.10: {} + + prismjs@1.30.0: {} + + process-ancestry@0.1.0: {} + + property-information@7.2.0: {} + + radix3@1.1.2: {} + + readdirp@5.1.1: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.19.0): + dependencies: + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.9 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + rehype-expressive-code@0.44.3: + dependencies: + expressive-code: 0.44.3 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + remark-directive@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.1 + micromark-extension-directive: 4.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.1.0 + micromark-util-types: 2.0.3 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.3: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.2.0 + unified: 11.0.5 + + request-light@0.5.8: {} + + request-light@0.7.0: {} + + require-from-string@2.0.2: {} + + resolve-pkg-maps@1.0.0: {} + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.1.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + rolldown@1.2.15: + dependencies: + '@oxc-project/types': 0.155.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.15 + '@rolldown/binding-android-arm64': 1.2.15 + '@rolldown/binding-darwin-arm64': 1.2.15 + '@rolldown/binding-darwin-x64': 1.2.15 + '@rolldown/binding-freebsd-x64': 1.2.15 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.15 + '@rolldown/binding-linux-arm64-gnu': 1.2.15 + '@rolldown/binding-linux-arm64-musl': 1.2.15 + '@rolldown/binding-linux-ppc64-gnu': 1.2.15 + '@rolldown/binding-linux-s390x-gnu': 1.2.15 + '@rolldown/binding-linux-x64-gnu': 1.2.15 + '@rolldown/binding-linux-x64-musl': 1.2.15 + '@rolldown/binding-openharmony-arm64': 1.2.15 + '@rolldown/binding-win32-arm64-msvc': 1.2.15 + '@rolldown/binding-win32-x64-msvc': 1.2.15 + + satteri@0.10.5: + 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 + + sax@1.6.1: {} + + semver@7.8.5: {} + + sharp@0.35.5(@types/node@24.19.2): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.5 + '@img/sharp-darwin-x64': 0.35.5 + '@img/sharp-freebsd-wasm32': 0.35.5 + '@img/sharp-libvips-darwin-arm64': 1.3.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + '@img/sharp-libvips-linux-arm': 1.3.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 + '@img/sharp-libvips-linux-x64': 1.3.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + '@img/sharp-linux-arm': 0.35.5 + '@img/sharp-linux-arm64': 0.35.5 + '@img/sharp-linux-ppc64': 0.35.5 + '@img/sharp-linux-riscv64': 0.35.5 + '@img/sharp-linux-s390x': 0.35.5 + '@img/sharp-linux-x64': 0.35.5 + '@img/sharp-linuxmusl-arm64': 0.35.5 + '@img/sharp-linuxmusl-x64': 0.35.5 + '@img/sharp-webcontainers-wasm32': 0.35.5 + '@img/sharp-win32-arm64': 0.35.5 + '@img/sharp-win32-ia32': 0.35.5 + '@img/sharp-win32-x64': 0.35.5 + '@types/node': 24.19.2 + + shiki@4.5.0: + dependencies: + '@shikijs/core': 4.5.0 + '@shikijs/engine-javascript': 4.5.0 + '@shikijs/engine-oniguruma': 4.5.0 + '@shikijs/langs': 4.5.0 + '@shikijs/themes': 4.5.0 + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.1.0 + '@types/hast': 3.0.5 + + sisteransi@1.0.5: {} + + sitemap@9.0.1: + dependencies: + '@types/node': 24.19.2 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.6.1 + + smol-toml@1.9.1: {} + + source-map-js@1.2.2: {} + + source-map@0.7.6: {} + + source-map@0.8.0: {} + + space-separated-tokens@2.0.2: {} + + std-env@4.3.0: {} + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.4.0 + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + supports-color@10.2.2: {} + + svgo@4.1.0: + dependencies: + commander: 11.1.0 + css-select: 6.0.0 + css-tree: 3.2.1 + css-what: 7.0.0 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.1 + + tiny-inflate@1.0.3: {} + + tinyclip@1.0.3: {} + + tinyexec@1.3.1: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + tinyps@0.5.1: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + tslib@2.8.1: {} + + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.8.5 + + typescript@6.0.3: {} + + ufo@1.6.4: {} + + ultrahtml@1.7.0: {} + + uncrypto@0.1.3: {} + + undici-types@7.24.6: {} + + undici@7.29.1: {} + + undici@8.12.3: {} + + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unifont@1.0.3: + dependencies: + css-tree: 3.2.1 + fnv1a-64: 0.1.2 + std-env: 4.3.0 + undici: 8.12.3 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unstorage@1.17.6: + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.5.3 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.4 + + url-extras@0.1.0: {} + + util-deprecate@1.0.2: {} + + verkit@0.5.0: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@8.3.5(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.31 + rolldown: 1.2.15 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.19.2 + esbuild: 0.28.2 + fsevents: 2.3.3 + yaml: 2.9.1 + + vitefu@1.1.3(vite@8.3.5(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1)): + optionalDependencies: + vite: 8.3.5(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + + volar-service-css@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-css-languageservice: 6.3.10 + vscode-languageserver-textdocument: 1.0.15 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-emmet@0.0.71(@volar/language-service@2.4.28): + dependencies: + '@emmetio/css-parser': 0.4.1 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-html@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-html-languageservice: 5.6.2 + vscode-languageserver-textdocument: 1.0.15 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-prettier@0.0.71(@volar/language-service@2.4.28)(prettier@3.9.10): + dependencies: + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + prettier: 3.9.10 + + volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-typescript@0.0.71(@volar/language-service@2.4.28): + dependencies: + path-browserify: 1.0.1 + semver: 7.8.5 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.15 + vscode-nls: 5.2.0 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-yaml@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.2.0 + yaml-language-server: 1.23.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + vscode-css-languageservice@6.3.10: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.15 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.2.0 + + vscode-html-languageservice@5.6.2: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.15 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.15 + vscode-languageserver-types: 3.18.4 + vscode-nls: 5.2.0 + vscode-uri: 3.2.0 + + vscode-jsonrpc@8.2.0: {} + + vscode-jsonrpc@9.0.3: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-protocol@3.18.4: + dependencies: + vscode-jsonrpc: 9.0.3 + vscode-languageserver-types: 3.18.4 + + vscode-languageserver-textdocument@1.0.15: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver-types@3.18.4: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@3.2.0: {} + + web-namespaces@2.0.1: {} + + workerd@1.20261019.1: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20261019.1 + '@cloudflare/workerd-darwin-arm64': 1.20261019.1 + '@cloudflare/workerd-linux-64': 1.20261019.1 + '@cloudflare/workerd-linux-arm64': 1.20261019.1 + '@cloudflare/workerd-windows-64': 1.20261019.1 + + wrangler@4.151.3(@types/node@24.19.2): + dependencies: + '@cloudflare/kv-asset-handler': 0.5.0 + '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261019.1) + blake3-wasm: 2.1.5 + esbuild: 0.28.2 + miniflare: 5.20261019.1-beta(@types/node@24.19.2) + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.24 + workerd: 1.20261019.1 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - utf-8-validate + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + ws@8.21.0: {} + + xxhash-wasm@1.1.0: {} + + y18n@5.0.8: {} + + yaml-language-server@1.23.0: + dependencies: + '@vscode/l10n': 0.0.18 + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + ajv-i18n: 4.2.0(ajv@8.20.0) + prettier: 3.9.10 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.15 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + yaml: 2.8.3 + + yaml@2.8.3: {} + + yaml@2.9.1: {} + + yargs-parser@22.0.0: {} + + yargs@18.2.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.3.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + + yocto-queue@1.2.2: {} + + youch-core@0.3.3: + dependencies: + '@poppinss/exception': 1.2.3 + error-stack-parser-es: 1.0.5 + + youch@4.1.0-beta.10: + dependencies: + '@poppinss/colors': 4.1.6 + '@poppinss/dumper': 0.6.5 + '@speed-highlight/core': 1.2.24 + cookie: 1.1.1 + youch-core: 0.3.3 + + zod@4.6.7: {} + + zwitch@2.0.4: {} diff --git a/site/public/_headers b/site/public/_headers new file mode 100644 index 0000000..8ea6cad --- /dev/null +++ b/site/public/_headers @@ -0,0 +1,8 @@ +# Cloudflare static asset headers (https://developers.cloudflare.com/workers/static-assets/headers/). +# Astro fingerprints everything in /_astro/, so it can be cached forever. +/_astro/* + Cache-Control: public, max-age=31536000, immutable + +/* + X-Content-Type-Options: nosniff + Referrer-Policy: strict-origin-when-cross-origin diff --git a/site/public/favicon.svg b/site/public/favicon.svg new file mode 100644 index 0000000..668241d --- /dev/null +++ b/site/public/favicon.svg @@ -0,0 +1 @@ + diff --git a/site/public/og.png b/site/public/og.png new file mode 100644 index 0000000000000000000000000000000000000000..f46ac620c749ff0778d2a0b21fe987b53014e70b GIT binary patch literal 215646 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

$9sSY=!RuPZm{*BXL8qE; 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


dY7SiI1MW{)JnV)?kEb^Jg4=+t6wAX8Og3tN>mg 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 literal 0 HcmV?d00001 diff --git a/site/public/robots.txt b/site/public/robots.txt new file mode 100644 index 0000000..e51a616 --- /dev/null +++ b/site/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://durable.wavezync.com/sitemap-index.xml diff --git a/site/src/assets/logo.svg b/site/src/assets/logo.svg new file mode 100644 index 0000000..f2c2673 --- /dev/null +++ b/site/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/site/src/assets/wavezync-mark.png b/site/src/assets/wavezync-mark.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbf0a8a771f64f24f2e04d27cb934ddc5efcd42 GIT binary patch literal 52216 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 literal 0 HcmV?d00001 diff --git a/site/src/changelog.ts b/site/src/changelog.ts new file mode 100644 index 0000000..e9b318f --- /dev/null +++ b/site/src/changelog.ts @@ -0,0 +1,88 @@ +// The CHANGELOG.md files are git-cliff output (see cliff.toml): a "## version - date" +// heading per release, "### Features"-style groups, and a commit link on every +// entry. This Sätteri plugin keeps the text and reshapes the markup into a release +// timeline (styled in styles/theme.css): a version heading with its date, a Latest +// or Pre-release badge and a compare link; colored groups; quiet commit chips. + +const GROUPS: Record = { + Features: 'feat', + 'Bug fixes': 'fix', + Performance: 'perf', + Refactoring: 'refactor', + Documentation: 'docs', +}; +const COMMIT = /\/commit\/[0-9a-f]{7,40}$/; + +type Node = { type: string; url?: string; value?: string; depth?: number; children?: Node[] }; +type Ctx = { + fileURL?: URL; + data: Record; + textContent(node: Node): string; + setProperty(node: Node, key: 'data', value: object): void; + replaceNode(node: Node, next: object | object[]): void; + removeNode(node: Node): void; + parent(node: Node): { children: Node[] } | undefined; + indexOf(node: Node): number | undefined; +}; + +const text = (value: string) => ({ type: 'text', value }); +const el = (tag: string, className: string[], children: object[], props: Record = {}) => ({ + type: 'changelog', + data: { hName: tag, hProperties: { className, ...props } }, + children, +}); +const inChangelog = (ctx: Ctx) => !!ctx.fileURL?.pathname.endsWith('/CHANGELOG.md'); +const isCommit = (n?: Node) => n?.type === 'link' && COMMIT.test(n.url ?? ''); +const day = (iso: string) => + new Date(`${iso}T00:00:00Z`).toLocaleDateString('en', { month: 'short', day: 'numeric', year: 'numeric', timeZone: 'UTC' }); + +// "[1.0.0](…/compare/durable-v0.1.0-rc...durable-v1.0.0) - 2026-10-21", "0.1.0-rc - 2026-06-24" or "Unreleased". +function release(node: Node, ctx: Ctx) { + const [, version, date] = /^(.+?)(?: - (\d{4}-\d{2}-\d{2}))?$/.exec(ctx.textContent(node))!; + const compare = node.children?.find((c) => c.type === 'link')?.url; + const since = compare && /compare\/(.+?)\.\.\./.exec(compare)?.[1].split('-v').pop(); + // The first dated release on the page is the newest one. + const latest = !!date && !ctx.data.sawRelease; + if (date) ctx.data.sawRelease = true; + + const meta = [ + date ? el('time', ['cl-date'], [text(day(date))], { dateTime: date }) : el('span', ['cl-date'], [text('Not released yet')]), + latest && el('span', ['cl-badge', 'cl-latest'], [text('Latest')]), + version.includes('-') && el('span', ['cl-badge', 'cl-pre'], [text('Pre-release')]), + since && { type: 'link', url: compare, data: { hProperties: { className: ['cl-compare'] } }, children: [text(`Changes since ${since}`)] }, + ].filter(Boolean) as object[]; + + ctx.replaceNode(node, [ + { type: 'heading', depth: 2, data: { hProperties: { className: ['cl-version'] } }, children: [text(version)] }, + el('div', ['cl-meta'], meta), + ]); +} + +export const changelog = { + name: 'changelog', + heading(node: Node, ctx: Ctx) { + if (!inChangelog(ctx)) return; + if (node.depth === 2) return release(node, ctx); + const kind = node.depth === 3 && GROUPS[ctx.textContent(node)]; + if (kind) ctx.setProperty(node, 'data', { hProperties: { className: ['cl-group', `cl-${kind}`] } }); + }, + link(node: Node, ctx: Ctx) { + if (!inChangelog(ctx) || !isCommit(node)) return; + const hash = ctx.textContent(node); + ctx.setProperty(node, 'data', { hProperties: { className: ['cl-commit'], ariaLabel: `Commit ${hash} on GitHub` } }); + }, + // The chip replaces the parentheses around the commit link. + text(node: Node, ctx: Ctx) { + if (!inChangelog(ctx)) return; + const kids = ctx.parent(node)?.children ?? []; + const i = ctx.indexOf(node) ?? -1; + const value = node.value ?? ''; + if (value.endsWith(' (') && isCommit(kids[i + 1])) ctx.replaceNode(node, text(value.slice(0, -1))); + else if (value === ')' && isCommit(kids[i - 1])) ctx.removeNode(node); + }, + strong(node: Node, ctx: Ctx) { + if (inChangelog(ctx) && ctx.textContent(node) === 'Breaking:') { + ctx.replaceNode(node, el('span', ['cl-badge', 'cl-breaking'], [text('Breaking')])); + } + }, +}; diff --git a/site/src/code-theme.ts b/site/src/code-theme.ts new file mode 100644 index 0000000..be9be63 --- /dev/null +++ b/site/src/code-theme.ts @@ -0,0 +1,50 @@ +// Code colors for the Night look. Used by the run simulator and as the dark +// Expressive Code theme in the docs. +import type { ShikiConfig } from '@astrojs/markdown-remark'; + +type ShikiTransformer = NonNullable[number]; + +const FG = '#cdd7ed'; +const CALL = '#7cc4ff'; + +export const night = { + name: 'durable-night', + type: 'dark' as const, + colors: { 'editor.background': '#0d1426', 'editor.foreground': FG }, + tokenColors: [ + { scope: ['comment', 'punctuation.definition.comment', 'comment.block.documentation'], settings: { foreground: '#677593', fontStyle: 'italic' } }, + { scope: ['keyword', 'storage', 'keyword.control', 'keyword.operator', 'punctuation.section.embedded'], settings: { foreground: '#ff86ad' } }, + { scope: ['punctuation', 'meta.module.elixir punctuation.separator'], settings: { foreground: '#8390ab' } }, + { scope: ['string', 'punctuation.definition.string'], settings: { foreground: '#b8e38a' } }, + { scope: ['string meta.embedded source'], settings: { foreground: FG } }, + { scope: ['constant.other.symbol', 'constant.other.symbol punctuation.definition.constant'], settings: { foreground: '#5fd4c4' } }, + { scope: ['constant.other.keywords', 'constant.other.keywords punctuation.definition.constant', 'variable.other.readwrite.module'], settings: { foreground: '#a9c1ff' } }, + { scope: ['constant.numeric', 'constant.language'], settings: { foreground: '#ff9e6b' } }, + { scope: ['entity.name.type', 'entity.other.inherited-class', 'variable.other.constant', 'support.type'], settings: { foreground: '#ffc27a' } }, + { scope: ['entity.name.function', 'support.function', 'variable.function'], settings: { foreground: CALL } }, + { scope: ['comment.wildcard'], settings: { foreground: '#8390ab', fontStyle: '' } }, + ], +}; + +// Elixir's grammar leaves calls without parentheses untagged, so Durable's DSL +// (`workflow "x" do`, `step :charge, ...`) would read like plain variables. +// Color a bare call at the start of a line as a call. Only touches Night tokens. +export const macroCalls: ShikiTransformer = { + name: 'elixir-macro-calls', + tokens(lines) { + if (this.options.lang !== 'elixir') return; + return lines.map((line) => { + const m = /^(\s*)([a-z_]\w*[?!]?) (?=[:"'%{[@a-z])/.exec(line.map((t) => t.content).join('')); + const t = line[0]; + if (!m || !t || t.color?.toLowerCase() !== FG || t.content.length < m[0].length - 1) return line; + const [indent, word] = [m[1], m[2]]; + const rest = t.content.slice(indent.length + word.length); + return [ + ...(indent ? [{ ...t, content: indent }] : []), + { ...t, content: word, offset: t.offset + indent.length, color: CALL }, + ...(rest ? [{ ...t, content: rest, offset: t.offset + indent.length + word.length }] : []), + ...line.slice(1), + ]; + }); + }, +}; diff --git a/site/src/components/AgentDemo.astro b/site/src/components/AgentDemo.astro new file mode 100644 index 0000000..f1c3b1b --- /dev/null +++ b/site/src/components/AgentDemo.astro @@ -0,0 +1,428 @@ +--- +// "Ship agents that finish the job": each outcome is a tab that plays a short, +// scripted run of the agent below, so the claim is shown rather than told. +import { Code } from 'astro:components'; +import { PiggyBank, UserCheck, RefreshCw, Eye, Lightbulb, FileDiff, FlaskConical, GitMerge, Sparkles, Check, Zap } from '@lucide/astro'; +import { macroCalls, night } from '../code-theme'; + +// Written for this page; every call in it is real API. +const code = `workflow "fix_issue", timeout: days(14) do + step :plan, [retry: [max_attempts: 3, backoff: :exponential]], fn ctx -> + plan = ReqLLM.generate_text!(@model, "Plan a fix for: #{ctx["issue"]}") + {:ok, assign(ctx, :plan, plan)} + end + + step :write_patch, [retry: [max_attempts: 3]], fn ctx -> + patch = ReqLLM.generate_text!(@model, ctx.plan) + {:ok, assign(ctx, :patch, patch)} + end + + step :run_tests, [retry: [max_attempts: 5]], fn ctx -> + {:ok, run} = CI.run(ctx["repo"], ctx.patch) + {:ok, assign(ctx, :ci_url, run.url)} + end + + step :await_review, fn ctx -> + decision = wait_for_approval("maintainer", timeout: days(7)) + {:ok, assign(ctx, :decision, decision)} + end + + step :merge, fn ctx -> + GitHub.merge(ctx["repo"], ctx.patch) + {:ok, ctx} + end +end`; + +const outcomes = [ + { id: 'crash', icon: PiggyBank, title: 'Crashes cost nothing', text: 'Each LLM and tool call is a step whose result is saved. After a crash or a deploy, the agent resumes at the next step and never pays for a finished call twice.' }, + { id: 'approval', icon: UserCheck, title: 'Approvals can take a week', text: 'The agent waits on a person with wait_for_approval/2. It holds no process while it waits, then carries on with its full context.' }, + { id: 'flaky', icon: RefreshCw, title: 'Flaky tools stop being your problem', text: 'Rate limits and timeouts are retried with backoff, step by step, without restarting the whole run.' }, + { id: 'inspect', icon: Eye, title: 'You can see every move', text: "The dashboard shows each step's input, output and timing, so you know exactly what the agent did and why." }, +]; +// The workflow's graph. `llm` marks the steps that call a model (and cost money). +const steps = [ + { id: 'plan', icon: Lightbulb, llm: true }, + { id: 'write_patch', icon: FileDiff, llm: true }, + { id: 'run_tests', icon: FlaskConical }, + { id: 'await_review', icon: UserCheck }, + { id: 'merge', icon: GitMerge }, +]; +--- + + + + + diff --git a/site/src/components/DashboardShowcase.astro b/site/src/components/DashboardShowcase.astro new file mode 100644 index 0000000..7a0e31a --- /dev/null +++ b/site/src/components/DashboardShowcase.astro @@ -0,0 +1,264 @@ +--- +// An illustration of durable_dashboard. The sidebar switches views (and they +// cycle on their own until someone clicks). Example data, real page structure. +import { LayoutDashboard, ListTree, Workflow, Inbox, Layers, CalendarClock, ChartLine, Search, RotateCcw, Ban, Pause, Play } from '@lucide/astro'; + +const nav = [ + { view: null, icon: LayoutDashboard, label: 'Overview' }, + { view: 'runs', icon: ListTree, label: 'Runs' }, + { view: null, icon: Workflow, label: 'Workflows' }, + { view: 'inbox', icon: Inbox, label: 'Inbox', badge: 3 }, + { view: 'queues', icon: Layers, label: 'Queues' }, + { view: null, icon: CalendarClock, label: 'Schedules' }, + { view: null, icon: ChartLine, label: 'Telemetry' }, +]; +const runs = [ + { s: 'running', wf: 'issue_agent', id: 'a91c3e', d: '12s', at: 'now' }, + { s: 'failed', wf: 'process_order', id: '8f3c2a', d: '1.4s', at: '2m ago' }, + { s: 'waiting', wf: 'expense_approval', id: '4b07d1', d: '2d 3h', at: '2d ago' }, + { s: 'completed', wf: 'process_order', id: '77e0b9', d: '2.1s', at: '5m ago' }, + { s: 'compensated', wf: 'book_trip', id: 'c2d4a0', d: '3.8s', at: '9m ago' }, + { s: 'completed', wf: 'daily_sales_report', id: '1fa9e2', d: '41s', at: '9:00' }, +]; +const label: Record = { running: 'Running', failed: 'Failed', waiting: 'Waiting', completed: 'Completed', compensated: 'Compensated' }; +const trace = [ + { s: 'completed', name: 'validate', at: 0, w: 6, d: '12ms' }, + { s: 'failed', name: 'charge #1', at: 7, w: 22, d: '1.1s' }, + { s: 'failed', name: 'charge #2', at: 40, w: 18, d: '0.9s' }, + { s: 'failed', name: 'charge #3', at: 74, w: 20, d: '1.0s' }, + { s: 'pending', name: 'send_confirmation', at: 0, w: 0, d: 'not run' }, +]; +const queues = [ + { name: 'default', conc: 10, busy: 7, backlog: 23, bars: [4, 6, 5, 8, 7, 9, 6, 8, 10, 9, 7, 8] }, + { name: 'priority', conc: 5, busy: 2, backlog: 0, bars: [1, 2, 1, 3, 2, 1, 2, 2, 1, 2, 3, 2] }, + { name: 'emails', conc: 20, busy: 0, backlog: 412, paused: true, bars: [3, 5, 8, 11, 14, 18, 21, 25, 30, 34, 38, 42] }, +]; +--- +
+
+ + localhost:4000/dashboard + Search runs and workflows⌘K +
+
+ + +
+
+
status: anylast 1hFilter by workflow, status or run id
+ + + + {runs.map((r) => ( + + + + + ))} + +
StatusWorkflowRunTookStarted
{label[r.s]}{r.wf}{r.id}{r.d}{r.at}
+
+ +
+
+
process_order run 8f3c2a Failed
+
Retry from chargeCancel
+
+
+ {trace.map((t) => ( +
+ {t.name} + {t.w > 0 && } + {t.d} +
+ ))} +
+
+ Error on attempt 3 + {"(MatchError) no match of right hand side value: {:error, :card_declined}"} + (my_app 0.1.0) lib/my_app/orders.ex:28: MyApp.OrderWorkflow.charge/1 +
+
+ +
+ {[ + ['expense_approval', 'Approve the $420 expense from Dana?', 'manager', '2h'], + ['issue_agent', 'Review the patch for acme/shop#1042', 'maintainer', '1d'], + ['refund_request', 'Refund or store credit?', 'support', '3d'], + ].map(([wf, prompt, who, age]) => ( +
+
{wf}

{prompt}

waiting for {who}, {age}
+
ApproveReject
+
+ ))} +
+ +
+ {queues.map((q) => ( +
+
+ {q.name} + {q.paused ? Paused : {q.busy} of {q.conc} busy} + {q.paused ? <>Resume : <>Pause} +
+ + {q.backlog} waiting +
+ ))} +
+
+
+
+ + + + diff --git a/site/src/components/Features.astro b/site/src/components/Features.astro new file mode 100644 index 0000000..3ca5019 --- /dev/null +++ b/site/src/components/Features.astro @@ -0,0 +1,102 @@ +--- +// Every workflow primitive, as a bento grid. Two wide tiles carry a small diagram. +import { RefreshCw, GitBranch, Split, Undo2, Hourglass, Webhook, UserCheck, CalendarClock, Network, Timer } from '@lucide/astro'; + +const tiles = [ + { icon: Split, wide: 'parallel', name: 'Parallel steps', text: 'Fan out, run at the same time, and collect each result as {:ok, _} or {:error, _}.', code: 'parallel do ... end', href: '/docs/parallel/' }, + { icon: RefreshCw, name: 'Retries with backoff', text: 'Exponential, linear or constant, per step.', code: 'retry: [max_attempts: 3]', href: '/docs/#reference' }, + { icon: GitBranch, name: 'Branching', text: 'Pattern-match on the context to pick one path.', code: 'branch on: fn ctx -> ... end', href: '/docs/branching/' }, + { icon: Webhook, name: 'Events', text: 'Resume when your app calls Durable.send_event/3.', code: 'wait_for_event("paid")', href: '/docs/waiting/' }, + { icon: UserCheck, name: 'Human input', text: 'Approvals, choices, text and forms, with timeouts.', code: 'wait_for_approval("lead")', href: '/docs/waiting/' }, + { icon: Undo2, wide: 'saga', name: 'Compensations', text: 'Sagas built in: when a step fails for good, finished steps are undone in reverse order.', code: 'step :book, [compensate: :cancel]', href: '/docs/compensations/' }, + { icon: Hourglass, name: 'Sleep', text: 'Pause for minutes or months. Nothing runs while it waits.', code: 'sleep(days(3))', href: '/docs/waiting/' }, + { icon: CalendarClock, name: 'Cron schedules', text: 'Recurring workflows, in any timezone.', code: '@schedule cron: "0 9 * * *"', href: '/docs/#scheduled-reports' }, + { icon: Network, name: 'Child workflows', text: 'Call one and wait for it, or start one and move on.', code: 'call_workflow(Child, input)', href: '/docs/orchestration/' }, + { icon: Timer, name: 'Deadlines', text: 'A run past its timeout fails and runs its compensations.', code: 'timeout: hours(2)', href: '/docs/#workflow-options' }, +]; +--- + + + diff --git a/site/src/components/FontPreload.astro b/site/src/components/FontPreload.astro new file mode 100644 index 0000000..d622af7 --- /dev/null +++ b/site/src/components/FontPreload.astro @@ -0,0 +1,9 @@ +--- +// Preload the fonts every page uses, so text paints in Sora from the first frame +// instead of flashing a fallback and swapping. Vite gives these the same hashed +// URLs as the @font-face rules in styles/fonts.css, so nothing downloads twice. +import sora from '@fontsource-variable/sora/files/sora-latin-wght-normal.woff2?url'; +import mono400 from '@fontsource/geist-mono/files/geist-mono-latin-400-normal.woff2?url'; +import mono500 from '@fontsource/geist-mono/files/geist-mono-latin-500-normal.woff2?url'; +--- +{[sora, mono400, mono500].map((href) => )} diff --git a/site/src/components/Graph.astro b/site/src/components/Graph.astro new file mode 100644 index 0000000..3203873 --- /dev/null +++ b/site/src/components/Graph.astro @@ -0,0 +1,163 @@ +--- +// The hero graphic: an order workflow unfolding as a graph. Steps light up as +// they run, fan out into parallel steps, join, wait for an approval, finish. +const nodes = [ + { id: 'validate', x: 100, y: 170 }, + { id: 'charge', x: 285, y: 170 }, + { id: 'send_receipt', x: 505, y: 70 }, + { id: 'create_invoice', x: 505, y: 170 }, + { id: 'reserve_stock', x: 505, y: 270 }, + { id: 'await_approval', x: 745, y: 170, kind: 'wait' }, + { id: 'ship', x: 945, y: 170 }, + { id: 'done', x: 1105, y: 170, kind: 'end' }, +].map((n) => ({ ...n, w: n.id.length * 9 + 46 })); +const at = Object.fromEntries(nodes.map((n) => [n.id, n])); +const edges = [ + ['validate', 'charge'], ['charge', 'send_receipt'], ['charge', 'create_invoice'], ['charge', 'reserve_stock'], + ['send_receipt', 'await_approval'], ['create_invoice', 'await_approval'], ['reserve_stock', 'await_approval'], + ['await_approval', 'ship'], ['ship', 'done'], +].map(([from, to]) => { + const a = at[from], b = at[to]; + const sx = a.x + a.w / 2, tx = b.x - b.w / 2, mx = (sx + tx) / 2; + return { from, to, d: `M${sx} ${a.y} C${mx} ${a.y} ${mx} ${b.y} ${tx} ${b.y}` }; +}); +--- +
+ + +
+ + + + diff --git a/site/src/components/Head.astro b/site/src/components/Head.astro new file mode 100644 index 0000000..cbc58bd --- /dev/null +++ b/site/src/components/Head.astro @@ -0,0 +1,7 @@ +--- +// Starlight's head, plus font preloads (see FontPreload.astro). +import Default from '@astrojs/starlight/components/Head.astro'; +import FontPreload from './FontPreload.astro'; +--- + + diff --git a/site/src/components/HeaderLinks.astro b/site/src/components/HeaderLinks.astro new file mode 100644 index 0000000..dce661b --- /dev/null +++ b/site/src/components/HeaderLinks.astro @@ -0,0 +1,23 @@ +--- +// Starlight has no top navigation; these links sit before the GitHub icon. +import Default from '@astrojs/starlight/components/SocialIcons.astro'; + +const path = Astro.url.pathname; +const links = [ + ['/docs/', 'Docs'], + ['/examples/', 'Examples'], + ['/docs/changelog/', 'Changelog'], +]; +const current = (href: string) => + href === '/docs/' ? path.startsWith('/docs/') && !path.startsWith('/docs/changelog') : path.startsWith(href); +--- + + + + diff --git a/site/src/components/Illus.astro b/site/src/components/Illus.astro new file mode 100644 index 0000000..aa0d959 --- /dev/null +++ b/site/src/components/Illus.astro @@ -0,0 +1,367 @@ +--- +// The stages for the Resilient / Reliable / Resumable panels. Each is a small run +// drawn in the same language as the agent graph, playing a short scripted +// sequence while it is on screen, with the code that does it underneath. +import { Code } from 'astro:components'; +import { ShieldCheck, CreditCard, Truck, Plane, Hotel, Undo2, Mail, Moon, BellRing, Check, X } from '@lucide/astro'; +import { macroCalls, night } from '../code-theme'; + +interface Props { kind: 'durable' | 'reliable' | 'resumable'; code: string } +const { kind, code } = Astro.props; + +const icons = { + validate: ShieldCheck, charge: CreditCard, ship: Truck, + book_flight: Plane, book_hotel: Hotel, cancel_flight: Undo2, cancel_hotel: Undo2, + send_welcome: Mail, sleep: Moon, send_reminder: BellRing, +}; +type Name = keyof typeof icons; +const saved: [Name, string][] = [['validate', '%{valid: true}'], ['charge', '%{charge_id: "ch_9f2"}'], ['ship', '%{tracking: "1Z84…"}']]; +const label = { + durable: 'Three steps run; each result is saved as it finishes. A worker restart only re-runs the step that was in flight.', + reliable: 'A step fails twice and succeeds on its third attempt after 1s and 2s backoffs. Then a charge fails for good and the bookings are undone in reverse.', + resumable: 'A run sends a welcome email, sleeps three days without holding a worker, then wakes with its context and sends a reminder.', +}[kind]; +--- +
+ +
+
+ + + + + + diff --git a/site/src/components/Observe.astro b/site/src/components/Observe.astro new file mode 100644 index 0000000..2e29745 --- /dev/null +++ b/site/src/components/Observe.astro @@ -0,0 +1,112 @@ +--- +// Observability: what Durable emits and how you read it. The chart is example +// data; the events, functions and the metrics hook are the real API. +import { Activity, Gauge, ChartColumn, ScrollText } from '@lucide/astro'; + +const points = [ + { icon: Activity, title: 'Telemetry spans', text: 'Runs, steps, compensations, queues and schedules emit :telemetry spans shaped like Phoenix, Ecto and Oban, so your existing tooling reads them as-is.' }, + { icon: Gauge, title: 'Metrics for any reporter', text: 'Durable.Telemetry.metrics/0 returns Telemetry.Metrics definitions for Prometheus, StatsD or LiveDashboard.' }, + { icon: ChartColumn, title: 'Stats you can query', text: 'Durable.Stats gives you overviews, timelines, step performance, queue history and grouped errors.' }, + { icon: ScrollText, title: 'An activity log', text: 'Recovered runs, fenced workers and queue pauses are recorded, so you can see what the system did on its own.' }, +]; +const events = ['[:durable, :workflow, :stop]', '[:durable, :step, :retry]', '[:durable, :queue, :job_claimed]', '[:durable, :schedule, :trigger]']; + +// Example throughput: completed and failed runs per minute. +const ok = [32, 38, 35, 44, 41, 52, 49, 58, 54, 61, 57, 66, 63, 70, 68, 74]; +const bad = [2, 1, 3, 2, 2, 4, 2, 1, 3, 2, 5, 2, 1, 2, 3, 1]; +const W = 560, H = 150, max = 80; +const x = (i: number) => (i / (ok.length - 1)) * W; +const y = (v: number) => H - (v / max) * H; +const line = (vs: number[]) => vs.map((v, i) => `${i ? 'L' : 'M'}${x(i).toFixed(1)} ${y(v).toFixed(1)}`).join(' '); +const area = `${line(ok)} L${W} ${H} L0 ${H} Z`; +--- +
+
    + {points.map((p) => ( +
  • {p.title}

    {p.text}

  • + ))} +
+ +
+
+
Runs per minute74+18%
+
Failure rate1.4%steady
+
p95 step time320ms-9%
+
+ + + + + + + + + + + {[0.25, 0.5, 0.75].map((g) => )} + + + + +
completedfailedExample data
+
# lib/my_app_web/telemetry.ex
+def metrics, do: my_metrics() ++ Durable.Telemetry.metrics()
+
{events.map((e) => {e})}
+
+
+ + diff --git a/site/src/components/Ops.astro b/site/src/components/Ops.astro new file mode 100644 index 0000000..deab361 --- /dev/null +++ b/site/src/components/Ops.astro @@ -0,0 +1,59 @@ +--- +// Operations: the same controls from code and from the terminal, as two tabs in +// one window. Both snippets come from the README, so they stay in step with the docs. +import { Code } from 'astro:components'; +import { Terminal, CodeXml } from '@lucide/astro'; +import { macroCalls, night } from '../code-theme'; + +interface Props { api: string; mix: string } +const { api, mix } = Astro.props; +--- +
+
+ + + +
+ +
+
+
+
+
+ + + + diff --git a/site/src/components/PackageHeader.astro b/site/src/components/PackageHeader.astro new file mode 100644 index 0000000..46682be --- /dev/null +++ b/site/src/components/PackageHeader.astro @@ -0,0 +1,79 @@ +--- +// Package facts under the page title: what the README's badges say, in the site's +// own look. Values come from packageMeta() in docs.ts (mix.exs + shared.exs). +import { Icon } from '@astrojs/starlight/components'; +import { Package, Scale, Droplet, BookOpen, Copy } from '@lucide/astro'; + +interface Props { + name: string; + version: string; + elixir: string; + license: string; + dep: string; + hex: string; + hexdocs: string; + github: string; +} +const { name, version, elixir, license, dep, hex, hexdocs, github } = Astro.props; +--- +
+
    +
  • v{version}
  • +
  • Elixir {elixir}
  • +
  • {license} license
  • +
+
+ + +
+
+ + + + diff --git a/site/src/components/PageTitle.astro b/site/src/components/PageTitle.astro new file mode 100644 index 0000000..764dbe0 --- /dev/null +++ b/site/src/components/PageTitle.astro @@ -0,0 +1,10 @@ +--- +// Starlight's title, plus a package header on pages that document a package. +import Default from '@astrojs/starlight/components/PageTitle.astro'; +import PackageHeader from './PackageHeader.astro'; +import { packageMeta } from '../docs'; + +const meta = packageMeta(Astro.locals.starlightRoute.entry.id); +--- + +{meta && } diff --git a/site/src/components/Sim.astro b/site/src/components/Sim.astro new file mode 100644 index 0000000..d8533ff --- /dev/null +++ b/site/src/components/Sim.astro @@ -0,0 +1,101 @@ +--- +// A workflow drawn as a graph (sim/layout.ts) that runs in the browser (sim/engine.ts), +// with its code and a log of what happened underneath. +import { Code } from 'astro:components'; +import { macroCalls, night } from '../code-theme'; +import { layout } from '../sim/layout'; +import type { Spec } from '../sim/engine'; +import '../sim/sim.css'; + +interface Props { code: string; spec: Spec; file: string } +const { code, spec, file } = Astro.props; +const g = layout(spec); +const gid = `sim-${spec.workflow}`; +--- +
+
+ {spec.workflow} + + Pending +
+ {spec.toggles?.map((t) => ( + + ))} +
+
+
+ +
+ + + + + + + {g.edges.map((e) => ( + + + + {e.label && ( + + + {e.label} + + )} + + ))} + {g.nodes.map((n) => ( + + {n.kind === 'gate' ? ( + + ) : n.kind === 'start' || n.kind === 'end' ? ( + + ) : ( + + )} + {n.kind === 'step' || n.kind === 'comp' ? ( + <> + + {n.label} + + ) : ( + {n.label} + )} + + + ))} + +
+ +
+
+
{file}
+ +
+
    +
    +
    + + diff --git a/site/src/content.config.ts b/site/src/content.config.ts new file mode 100644 index 0000000..2c6faf9 --- /dev/null +++ b/site/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; +import { packageDocs } from './docs'; + +export const collections = { + docs: defineCollection({ loader: packageDocs(), schema: docsSchema() }), +}; diff --git a/site/src/docs.ts b/site/src/docs.ts new file mode 100644 index 0000000..843809c --- /dev/null +++ b/site/src/docs.ts @@ -0,0 +1,170 @@ +// The docs are the package markdown files themselves (the same ones HexDocs +// renders), read in place from the repo. This table is the only thing that +// knows about them: URL, sidebar label and group, in sidebar order. +import { readFileSync, readdirSync } from 'node:fs'; +import { dirname, join, relative, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { glob, type Loader } from 'astro/loaders'; + +export const REPO = 'https://github.com/wavezync/durable'; +// Astro runs from site/; import.meta.url would point into the build output. +const ROOT = resolve(process.cwd(), '..'); + +export const DOCS: { file: string; id: string; label: string; group: string; title?: string; description?: string }[] = [ + { file: 'durable/README.md', id: 'docs', label: 'Introduction', group: 'Start here', title: 'Getting started' }, + { file: 'durable/guides/waiting.md', id: 'docs/waiting', label: 'Waiting', group: 'Guides' }, + { file: 'durable/guides/branching.md', id: 'docs/branching', label: 'Branching', group: 'Guides' }, + { file: 'durable/guides/parallel.md', id: 'docs/parallel', label: 'Parallel', group: 'Guides' }, + { file: 'durable/guides/compensations.md', id: 'docs/compensations', label: 'Compensations', group: 'Guides' }, + { file: 'durable/guides/orchestration.md', id: 'docs/orchestration', label: 'Orchestration', group: 'Guides' }, + { file: 'durable/guides/ai_workflows.md', id: 'docs/ai-workflows', label: 'AI workflows', group: 'Guides' }, + { file: 'durable_dashboard/README.md', id: 'docs/dashboard', label: 'Dashboard', group: 'Dashboard', title: 'Durable Dashboard' }, + { file: 'durable/CHANGELOG.md', id: 'docs/changelog', label: 'durable', group: 'Changelog', description: 'Release history of durable, the workflow engine for Elixir: new features, fixes and breaking changes in every version on Hex.' }, + { file: 'durable_dashboard/CHANGELOG.md', id: 'docs/changelog/dashboard', label: 'durable_dashboard', group: 'Changelog', description: 'Release history of durable_dashboard, the Phoenix LiveView dashboard for Durable: new pages, fixes and changes in every version on Hex.' }, +]; + +export const docHref = (id: string) => `/${id}/`; + +// Pages that document a package get a header with its metadata (PackageHeader.astro), +// read from the package's own mix.exs and the shared metadata so it matches what's released. +const PACKAGE_PAGES: Record = { docs: 'durable', 'docs/dashboard': 'durable_dashboard' }; + +export function packageMeta(id: string) { + const name = PACKAGE_PAGES[id]; + if (!name) return null; + const mix = readFileSync(join(ROOT, name, 'mix.exs'), 'utf8'); + const shared = readFileSync(join(ROOT, 'shared.exs'), 'utf8'); + const version = /@version "([^"]+)"/.exec(mix)![1]; + const [major, minor] = version.split('.'); + return { + name, + version, + elixir: /elixir: "([^"]+)"/.exec(shared)![1], + license: /licenses: \["([^"]+)"/.exec(shared)![1], + dep: `{:${name}, "~> ${major}.${minor}"}`, + hex: `https://hex.pm/packages/${name}`, + hexdocs: `https://hexdocs.pm/${name}`, + github: `${REPO}/tree/main/${name}`, + }; +} + +const byFile = new Map(DOCS.map((d) => [d.file, d])); + +// The files have no frontmatter. Starlight needs a title, so it comes from +// the H1; the first prose paragraph after it becomes the meta description. +function meta(path: string) { + const doc = byFile.get(relative(ROOT, path))!; + const src = readFileSync(path, 'utf8'); + const h1 = /^# (.+)$/m.exec(src)?.[1] ?? doc.label; + const description = src + .slice(src.indexOf(h1) + h1.length) + .split('\n\n') + .map((p) => p.trim().replace(/\s+/g, ' ')) + .find((p) => /^[A-Z]/.test(p)) + // Plain text for : keep link text, drop link targets, code ticks and bold markers. + ?.replace(/\[([^\]]+)\]\([^)]*\)/g, '$1') + .replace(/`|\*\*/g, ''); + return { + title: doc.title ?? (doc.group === 'Changelog' ? `${doc.label} changelog` : h1), + description: doc.description ?? description, + editUrl: `${REPO}/edit/main/${doc.file}`, + // Release groups (Features, Bug fixes, …) repeat under every version; the outline lists versions only. + ...(doc.group === 'Changelog' && { tableOfContents: { maxHeadingLevel: 2 } }), + }; +} + +// Starlight's docs collection, fed from the package files instead of src/content/docs. +export function packageDocs(): Loader { + const ids = new Map(DOCS.map((d) => [d.file, d.id])); + const inner = glob({ base: ROOT, pattern: [...ids.keys()], generateId: ({ entry }) => ids.get(entry)! }); + return { + name: 'package-docs', + load: (ctx) => + inner.load({ + ...ctx, + parseData: (entry) => ctx.parseData({ ...entry, data: { ...meta(resolve(entry.filePath!)), ...entry.data } }), + }), + }; +} + +// Public modules, so `Durable.Wait` in backticks links to HexDocs the way +// ExDoc autolinks it. Modules with `@moduledoc false` have no page there. +const MODULES = new Set(); +const lib = join(ROOT, 'durable/lib'); +for (const f of readdirSync(lib, { recursive: true }) as string[]) { + if (!f.endsWith('.ex')) continue; + const src = readFileSync(join(lib, f), 'utf8'); + for (const m of src.matchAll(/defmodule ([\w.]+) do\n((?:.*\n){0,2})/g)) { + if (!m[2].includes('@moduledoc false')) MODULES.add(m[1]); + } +} + +const REF = /^((?:Durable|Mix\.Tasks\.Durable)(?:\.[A-Z]\w*)*)(?:\.([a-z_]\w*[?!]?)\/(\d))?$/; + +function hexdocs(code: string) { + const m = REF.exec(code); + if (!m || !MODULES.has(m[1])) return null; + return `https://hexdocs.pm/durable/${m[1]}.html${m[2] ? `#${m[2]}/${m[3]}` : ''}`; +} + +// Relative links point at files in the repo: other docs become site pages, +// anything else goes to GitHub. +function rewrite(url: string, from: string) { + if (/^([a-z]+:|#|\/)/.test(url)) return url; + const [path, hash] = url.split('#'); + const target = relative(ROOT, resolve(dirname(from), path)); + const doc = byFile.get(target); + if (doc) return docHref(doc.id) + (hash ? `#${hash}` : ''); + return `${REPO}/blob/main/${target}${hash ? `#${hash}` : ''}`; +} + +type Node = { type: string; url: string; value: string; depth: number; children?: Node[] }; +type Ctx = { + fileURL?: URL; + setProperty(node: Node, key: 'url', value: string): void; + replaceNode(node: Node, next: object): void; + removeNode(node: Node): void; + parent(node: Node): { type: string } | undefined; + textContent(node: Node): string; +}; +const relink = (node: Node, ctx: Ctx) => ctx.setProperty(node, 'url', rewrite(node.url, fileURLToPath(ctx.fileURL!))); + +// A Sätteri mdast plugin (Astro 7's Markdown pipeline). +export const docLinks = { + name: 'doc-links', + link: relink, + definition: relink, + // Starlight renders the title (taken from this H1) itself. + heading(node: Node, ctx: Ctx) { + if (node.depth === 1) ctx.removeNode(node); + }, + // The README's badge rows and its "Docs: … Dashboard: … API: …" line are for + // GitHub and HexDocs readers; on the site, PackageHeader shows the same facts. + paragraph(node: Node, ctx: Ctx) { + const kids = node.children ?? []; + const blank = (c: Node) => c.type === 'text' && !c.value.trim(); + const badge = (c: Node) => c.type === 'link' && !!c.children?.length && c.children.every((g) => g.type === 'image'); + const badges = kids.some(badge) && kids.every((c) => badge(c) || blank(c)); + const links = kids[0]?.type === 'strong' && ctx.textContent(kids[0]) === 'Docs:'; + if (badges || links) ctx.removeNode(node); + }, + inlineCode(node: Node, ctx: Ctx) { + const href = hexdocs(node.value); + if (!href || ctx.parent(node)?.type === 'link') return; + ctx.replaceNode(node, { type: 'link', url: href, children: [{ type: 'inlineCode', value: node.value }] }); + }, +}; + +// First code block in `lang` (and the text before it) under a heading line such +// as "### Approval Workflow". Throws when the heading is gone, so a README edit +// can't silently empty a page. +export function section(body: string, heading: string, lang = 'elixir') { + const start = body.indexOf(`\n${heading}\n`); + if (start < 0) throw new Error(`README has no "${heading}" section`); + const rest = body.slice(start + heading.length + 2); + const end = rest.search(/\n##+ /); + const text = end < 0 ? rest : rest.slice(0, end); + const code = new RegExp('```' + lang + '\\n([\\s\\S]*?)```').exec(text)?.[1] ?? ''; + const intro = text.slice(0, text.indexOf('```')).trim(); + return { intro, code: code.trimEnd() }; +} diff --git a/site/src/examples.ts b/site/src/examples.ts new file mode 100644 index 0000000..10185cf --- /dev/null +++ b/site/src/examples.ts @@ -0,0 +1,132 @@ +import { section } from './docs'; +import type { Spec } from './sim/engine'; + +// Code comes from the README section named by `heading`; only the run's +// behavior (timings, what can fail, what a person can answer) lives here. +export const EXAMPLES: { slug: string; heading: string; file: string; guide?: string; spec: Spec }[] = [ + { + slug: 'approval', + heading: 'Approval Workflow', + file: 'expense_approval.ex', + guide: 'waiting', + spec: { + workflow: 'expense_approval', + module: 'MyApp.ExpenseApproval', + nodes: [ + { + step: 'request_approval', + as: 'decision', + wait: { + says: 'a manager has to approve the expense', + actions: [ + { label: 'Approve', value: ':approved', call: '`Durable.provide_input(id, "manager", :approved)`' }, + { label: 'Reject', value: ':rejected', call: '`Durable.provide_input(id, "manager", :rejected)`' }, + { label: 'Let 3 days pass', value: ':auto_rejected', call: 'Nobody answered in 3 days, so `wait_for_approval` returned `:auto_rejected`.' }, + ], + }, + }, + { branch: 'decision', clauses: { ':approved': [{ step: 'process', ms: 900 }], _: [{ step: 'notify_rejection', ms: 700 }] } }, + ], + }, + }, + { + slug: 'parallel-fetch', + heading: 'Parallel Data Fetch', + file: 'dashboard_builder.ex', + guide: 'parallel', + spec: { + workflow: 'build_dashboard', + module: 'MyApp.DashboardBuilder', + nodes: [ + { step: 'init', ms: 400 }, + { parallel: [{ step: 'user', ms: 900 }, { step: 'orders', ms: 1700 }, { step: 'notifications', ms: 600 }] }, + { step: 'render', ms: 700 }, + ], + }, + }, + { + slug: 'trip-booking', + heading: 'Trip Booking (Saga)', + file: 'trip_booking.ex', + guide: 'compensations', + spec: { + workflow: 'book_trip', + module: 'MyApp.TripBooking', + toggles: [{ label: 'Decline the card', step: 'charge' }], + nodes: [ + { step: 'book_flight', ms: 1000, compensate: 'cancel_flight' }, + { step: 'book_hotel', ms: 900, compensate: 'cancel_hotel' }, + { step: 'charge', ms: 800, error: '`Payments.charge/2` raised: card declined' }, + ], + }, + }, + { + slug: 'trial-reminder', + heading: 'Delayed & Scheduled Execution', + file: 'trial_reminder.ex', + guide: 'waiting', + spec: { + workflow: 'trial_reminder', + module: 'MyApp.TrialReminder', + nodes: [ + { step: 'welcome', ms: 500 }, + { step: 'wait_3_days', ms: 300, sleep: 'sleep(days(3))' }, + { step: 'check_in', ms: 500 }, + { step: 'wait_until_trial_ends', ms: 300, sleep: 'schedule_at(trial_end)' }, + { step: 'convert_or_remind', ms: 700 }, + ], + }, + }, + { + slug: 'payment-events', + heading: 'Event-Driven Workflow', + file: 'payment_flow.ex', + guide: 'waiting', + spec: { + workflow: 'payment_flow', + module: 'MyApp.PaymentFlow', + nodes: [ + { step: 'create_invoice', ms: 700 }, + { + step: 'await_payment', + as: 'result', + wait: { + says: 'the payment provider has to send `payment.success` or `payment.failed`', + actions: [ + { label: 'Send payment.success', value: '"payment.success"', call: 'Your webhook called `Durable.send_event(id, "payment.success", %{transaction_id: "txn_123"})`.' }, + { label: 'Send payment.failed', value: '"payment.failed"', call: 'Your webhook called `Durable.send_event(id, "payment.failed", %{})`.' }, + { label: 'Let 7 days pass', value: '"payment.expired"', call: 'No event in 7 days, so `wait_for_any` returned the timeout value.' }, + ], + }, + }, + { branch: 'result', clauses: { '"payment.success"': [{ step: 'fulfill', ms: 800 }], _: [{ step: 'cancel', ms: 600 }] } }, + ], + }, + }, + { + slug: 'batch', + heading: 'Batch Processing', + file: 'bulk_emailer.ex', + spec: { + workflow: 'send_campaign', + module: 'MyApp.BulkEmailer', + nodes: [{ step: 'load', ms: 600 }, { step: 'send_emails', ms: 2600 }], + }, + }, + { + slug: 'daily-report', + heading: 'Scheduled Reports', + file: 'daily_report.ex', + spec: { + workflow: 'daily_sales_report', + module: 'MyApp.DailyReport', + intro: 'The scheduler started a run: cron `0 9 * * *`, America/New_York.', + nodes: [{ step: 'generate', ms: 1400 }, { step: 'distribute', ms: 900 }], + }, + }, +]; + +// `readme` is the durable/README.md body (the docs collection's `docs` entry). +export function examples(readme: string) { + return EXAMPLES.map((e) => ({ ...e, ...section(readme, `### ${e.heading}`) })); +} diff --git a/site/src/layouts/Landing.astro b/site/src/layouts/Landing.astro new file mode 100644 index 0000000..1688307 --- /dev/null +++ b/site/src/layouts/Landing.astro @@ -0,0 +1,197 @@ +--- +// The landing page's own shell. The docs use Starlight's; this page stands apart. +import '../styles/fonts.css'; +import { Image } from 'astro:assets'; +import { Icon } from '@astrojs/starlight/components'; +import FontPreload from '../components/FontPreload.astro'; +import { REPO } from '../docs'; +import mark from '../assets/wavezync-mark.png'; +import wordmark from '../assets/wavezync-wordmark.png'; + +interface Props { title: string; description: string } +const { title, description } = Astro.props; +const canonical = new URL(Astro.url.pathname, Astro.site); +const WAVEZYNC = 'https://wavezync.com'; +const LINKEDIN = 'https://www.linkedin.com/company/wavezync'; +const ld = { + '@context': 'https://schema.org', + '@type': 'SoftwareSourceCode', + name: 'Durable', + description, + url: canonical.href, + codeRepository: REPO, + programmingLanguage: 'Elixir', + license: 'https://opensource.org/licenses/MIT', + author: { + '@type': 'Organization', + name: 'WaveZync', + url: WAVEZYNC, + sameAs: [LINKEDIN, 'https://github.com/wavezync'], + }, +}; +--- + + + + + + + {title} + + + + + + + + + + + + + + + + + + + + diff --git a/site/src/pages/llms.txt.ts b/site/src/pages/llms.txt.ts new file mode 100644 index 0000000..0bc5aa8 --- /dev/null +++ b/site/src/pages/llms.txt.ts @@ -0,0 +1,44 @@ +// llms.txt (https://llmstxt.org): the site's pages as a Markdown list for +// language models, built from the same tables as the sidebar and the examples. +import type { APIRoute } from 'astro'; +import { getCollection, getEntry } from 'astro:content'; +import { DOCS, REPO, docHref, packageMeta } from '../docs'; +import { examples } from '../examples'; + +export const GET: APIRoute = async ({ site }) => { + const url = (path: string) => new URL(path, site).href; + const data = new Map((await getCollection('docs')).map((d) => [d.id, d.data])); + const line = (title: string, href: string, about?: string) => `- [${title}](${url(href)})${about ? `: ${about}` : ''}`; + const oneLine = (s?: string) => s?.replace(/\s+/g, ' ').trim(); + + const groups = new Map(); + for (const d of DOCS) { + const group = d.group === 'Changelog' ? 'Optional' : d.group; + const page = data.get(d.id)!; + groups.set(group, [...(groups.get(group) ?? []), line(page.title, docHref(d.id), oneLine(page.description))]); + } + const optional = groups.get('Optional')!; + groups.delete('Optional'); + + const list = examples((await getEntry('docs', 'docs'))!.body!); + groups.set('Examples', list.map((e) => line(e.heading, `/examples/${e.slug}/`, oneLine(e.intro)))); + + const { dep } = packageMeta('docs')!; + const body = [ + '# Durable', + '> Resilient, reliable, resumable workflows for Elixir. An open-source workflow engine for Elixir apps and AI agents: retries, sleeps, approvals and sagas, saved step by step so runs resume after crashes.', + `Durable is an Elixir library: add \`${dep}\` to your deps and start it in your supervision tree with your own Ecto repo. The docs pages are the package's own Markdown, the same files HexDocs renders.`, + ...[...groups].map(([group, lines]) => `## ${group}\n\n${lines.join('\n')}`), + [ + '## Optional', + '', + ...optional, + `- [API reference](https://hexdocs.pm/durable): every module and function on HexDocs`, + `- [Dashboard API reference](https://hexdocs.pm/durable_dashboard): the dashboard package on HexDocs`, + `- [Source code](${REPO}): the durable and durable_dashboard packages on GitHub`, + `- [Sitemap](${url('/sitemap-index.xml')}): every page on this site`, + ].join('\n'), + ].join('\n\n'); + + return new Response(body + '\n', { headers: { 'Content-Type': 'text/plain; charset=utf-8' } }); +}; diff --git a/site/src/sim/engine.ts b/site/src/sim/engine.ts new file mode 100644 index 0000000..5e52d7b --- /dev/null +++ b/site/src/sim/engine.ts @@ -0,0 +1,383 @@ +// A toy Durable run, close enough to the real executor to teach it: +// - completed steps go in a journal; every resume walks the workflow from the +// top and skips what the journal already has +// - a wait or sleep suspends the run; once answered, the run resumes and that +// step runs again from its top (the wait now returns the answer) +// - a step that fails after its retries rolls back completed steps' compensations +// Drawn on the workflow graph from layout.ts: steps light up as they run. + +type Action = { label: string; value: string; call: string }; +export type Step = { + step: string; + ms?: number; + retry?: number; // max attempts + flaky?: number; // fail the first N attempts + error?: string; + compensate?: string; + wait?: { says: string; actions: Action[]; auto?: number }; // auto: action picked after idling + sleep?: string; // the call, e.g. "sleep(days(3))" + as?: string; // context key a wait's answer is stored under +}; +export type Node = Step | { parallel: Step[] } | { branch: string; clauses: Record }; +export type Spec = { + workflow: string; + module: string; + nodes: Node[]; + toggles?: { label: string; step: string }[]; + intro?: string; +}; + +type Status = 'running' | 'waiting' | 'completed' | 'failed' | 'compensating' | 'compensated'; +type Row = { name: string; attempt: number; status: Status; t0: number; t1?: number; comp?: boolean; waited?: boolean }; + +const STOPPED = Symbol('stopped'); +const PARKED = Symbol('parked'); +class StepFailed extends Error {} + +const LABEL: Record = { + pending: 'Pending', running: 'Running', waiting: 'Waiting', completed: 'Completed', failed: 'Failed', + compensating: 'Compensating', compensated: 'Compensated', +}; +const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); +const fmt = (ms: number) => (ms < 1000 ? `${Math.round(ms)}ms` : `${(ms / 1000).toFixed(1)}s`); +const ids = (nodes: Node[]): string[] => + nodes.flatMap((n) => ('parallel' in n ? n.parallel.map((s) => s.step) : 'branch' in n ? [`branch:${n.branch}`, ...Object.values(n.clauses).flatMap(ids)] : [n.step])); + +function h(tag: K, cls = '', text = '') { + const el = document.createElement(tag); + if (cls) el.className = cls; + if (text) el.append(...rich(text)); + return el; +} +// `backticks` become ; everything else is text, never HTML. +function rich(text: string) { + return text.split('`').map((part, i) => (i % 2 ? Object.assign(document.createElement('code'), { textContent: part }) : document.createTextNode(part))); +} + +export class Sim { + private steps = new Map(); + private lines = new Map(); + private failing = new Set(); + private ui: Record; + private gnodes = new Map(); + private gedges: SVGGElement[] = []; + + private gen = 0; // bumps on "Run again"; stale timers check it + private epoch = 0; + private t0 = 0; + private tEnd = 0; + private status: Status | 'pending' = 'pending'; + private rows: Row[] = []; + private done = new Set(); + private order: string[] = []; + private answers = new Map(); + private ctx: Record = {}; + private parked: { step: Step; row: Row } | null = null; + private failed = false; + private seen = new Set(); + private taken = new Map(); // branch -> clause key + private skipped = new Set(); // node ids on branches not taken + private runId = ''; + + constructor(private root: HTMLElement, private spec: Spec) { + const index = (nodes: Node[]) => + nodes.forEach((n) => ('parallel' in n ? n.parallel.forEach((s) => this.steps.set(s.step, s)) : 'branch' in n ? Object.values(n.clauses).forEach(index) : this.steps.set(n.step, n))); + index(spec.nodes); + this.ui = Object.fromEntries([...root.querySelectorAll('[data-ui]')].map((el) => [el.dataset.ui!, el])); + root.querySelectorAll('[data-node]').forEach((g) => this.gnodes.set(g.dataset.node!, g)); + this.gedges = [...root.querySelectorAll('[data-from]')]; + this.mapLines(); + this.changed(); + this.frame(); + } + + // Each step's block in the code panel: from `step :name` to its `end`. + private mapLines() { + const lines = [...this.root.querySelectorAll('.code .line')]; + lines.forEach((line, i) => { + const m = /^(\s*)(?:step|compensate) :(\w+)/.exec(line.textContent ?? ''); + if (!m) return; + let j = i; + if (!/\bend\s*$/.test(line.textContent!)) { + while (j < lines.length - 1 && !(lines[++j].textContent!.startsWith(`${m[1]}end`))); + } + this.lines.set(m[2], lines.slice(i, j + 1)); + }); + } + + start() { + this.gen++; + this.epoch++; + Object.assign(this, { + t0: performance.now(), tEnd: 0, status: 'pending', rows: [], order: [], ctx: {}, parked: null, failed: false, + runId: Math.random().toString(16).slice(2, 8), + }); + this.done = new Set(); + this.answers = new Map(); + this.seen = new Set(); + this.taken = new Map(); + this.skipped = new Set(); + this.ui.log.replaceChildren(); + this.say(this.spec.intro ?? `\`Durable.start(${this.spec.module}, input)\` queued a run.`); + this.later(400, () => this.resume(true)); + } + + private now() { return performance.now() - this.t0; } + private later(ms: number, fn: () => void) { + const g = this.gen; + setTimeout(() => g === this.gen && fn(), ms); + } + + private resume(first: boolean) { + this.status = this.failed ? 'compensating' : 'running'; + this.say(first ? 'A worker picked up the run.' : 'The run resumed. Finished steps are skipped, not run again.'); + this.exec(this.epoch); + } + + private async exec(e: number) { + try { + if (!this.failed) { + await this.walk(this.spec.nodes, e); + this.finish('completed', 'Run completed.'); + return; + } + } catch (x) { + if (x === STOPPED || x === PARKED) return; + if (!(x instanceof StepFailed)) throw x; + this.failed = true; + } + try { + await this.compensate(e); + } catch (x) { + if (x !== STOPPED) throw x; + } + } + + private async walk(nodes: Node[], e: number): Promise { + for (const n of nodes) { + if ('parallel' in n) { + const results = await Promise.allSettled(n.parallel.map((s) => this.run(s, e))); + const err = results.find((r) => r.status === 'rejected') as PromiseRejectedResult | undefined; + if (err) throw err.reason; + } else if ('branch' in n) { + const value = this.ctx[n.branch]; + const key = value in n.clauses ? value : '_'; + if (!this.taken.has(n.branch)) { + this.taken.set(n.branch, key); + for (const [k, clause] of Object.entries(n.clauses)) if (k !== key) ids(clause).forEach((id) => this.skipped.add(id)); + this.say(`Branch on \`${n.branch}\` matched \`${key === '_' ? `_ (${value})` : value}\`.`); + } + await this.walk(n.clauses[key], e); + } else { + await this.run(n, e); + } + } + } + + private async run(s: Step, e: number) { + if (this.done.has(s.step)) return; + // Resuming after a wait: the wait is over, and the step body runs again. + const waited = this.parked?.step === s ? this.parked.row : null; + this.parked = null; + let attempt = waited?.attempt ?? (this.rows.findLast((r) => r.name === s.step)?.attempt ?? 0) + 1; + let row = waited ? Object.assign(waited, { status: 'running' as Status }) : this.row(s.step, attempt); + if (waited) this.changed(); + + for (;;) { + await this.tick(waited ? 300 : (s.ms ?? 600) * (0.8 + Math.random() * 0.4), e); + if ((s.wait || s.sleep) && !this.answers.has(s.step)) this.park(s, row); + if (s.as) this.ctx[s.as] = this.answers.get(s.step)!; + + if (!this.failing.has(s.step) && attempt > (s.flaky ?? 0)) { + Object.assign(row, { status: 'completed', t1: this.now() }); + this.done.add(s.step); + this.order.push(s.step); + this.changed(); + return; + } + + Object.assign(row, { status: 'failed', t1: this.now() }); + const err = s.error ?? 'raised an error'; + if (attempt >= (s.retry ?? 1)) { + this.say(`\`${s.step}\` failed: ${err}.${s.retry ? ` Out of retries (${s.retry} attempts).` : ''}`); + throw new StepFailed(); + } + const backoff = 1000 * 2 ** (attempt - 1); + this.say(`\`${s.step}\` failed: ${err}. Retrying in ${backoff / 1000}s (attempt ${attempt + 1} of ${s.retry}).`); + this.changed(); + await this.tick(backoff, e); + row = this.row(s.step, ++attempt); + } + } + + // Suspend: the run waits as a row in the database until it's answered. + private park(s: Step, row: Row): never { + Object.assign(row, { status: 'waiting', waited: true, t0: this.now() }); + this.parked = { step: s, row }; + this.status = 'waiting'; + if (s.sleep) { + this.say(`\`${s.step}\` called \`${s.sleep}\`. The run is suspended; no process holds it while it sleeps.`); + this.later(2600, () => this.answer(s.step, 'woke', 'The wake-up time came (sped up here).')); + } else { + this.say(`\`${s.step}\` is waiting: ${s.wait!.says}. No process holds the run while it waits.`); + const auto = s.wait!.auto; + if (auto !== undefined) { + const a = s.wait!.actions[auto]; + this.later(5000, () => this.answer(s.step, a.value, a.call)); + } + } + this.changed(); + throw PARKED; + } + + private answer(step: string, value: string, said: string) { + if (this.parked?.step.step !== step || this.answers.has(step)) return; + this.answers.set(step, value); + this.say(said); + this.later(300, () => this.resume(false)); + } + + private async compensate(e: number) { + const stack = this.order.map((n) => this.steps.get(n)!).filter((s) => s.compensate).reverse(); + if (!stack.length) return this.finish('failed', 'Run failed. No compensations to run.'); + if (!this.seen.has('comp')) { + this.seen.add('comp'); + this.status = 'compensating'; + this.say(`Rolling back: ${stack.map((s) => `\`${s.compensate}\``).join(', then ')}.`); + } + for (const s of stack) { + const name = s.compensate!; + if (this.done.has(`comp:${name}`)) continue; + const row = this.row(name, 1, true); + await this.tick(700, e); + Object.assign(row, { status: 'compensated', t1: this.now() }); + this.done.add(`comp:${name}`); + this.changed(); + } + this.finish('compensated', 'Run compensated. Everything it booked was undone.'); + } + + private finish(status: Status, said: string) { + this.status = status; + this.tEnd = this.now(); + this.say(said); + } + + // Flipping a toggle starts a fresh run, so its effect shows right away. + toggle(step: string, on: boolean) { + if (on) this.failing.add(step); + else this.failing.delete(step); + this.start(); + } + + private async tick(ms: number, e: number) { + await sleep(ms); + if (e !== this.epoch) throw STOPPED; + } + + private row(name: string, attempt: number, comp = false) { + const r: Row = { name, attempt, status: comp ? 'compensating' : 'running', t0: this.now(), comp }; + this.rows.push(r); + this.changed(); + return r; + } + + private say(text: string) { + const li = h('li'); + li.append(h('span', 'at', `+${(this.now() / 1000).toFixed(1)}s`), h('span', '', text)); + this.ui.log.append(li); + this.ui.log.scrollTop = this.ui.log.scrollHeight; + this.changed(); + } + + // The latest attempt of a graph node (a step, or a compensation as comp:name). + private latest(id: string) { + const comp = id.startsWith('comp:'); + const name = comp ? id.slice(5) : id; + return this.rows.findLast((r) => r.name === name && !!r.comp === comp); + } + + private stateOf(id: string): string { + if (id === 'start') return this.status === 'pending' ? 'pending' : 'completed'; + if (id === 'end') return ['completed', 'failed', 'compensated'].includes(this.status) ? this.status : 'pending'; + if (id.startsWith('branch:')) return this.taken.has(id.slice(7)) ? 'completed' : 'pending'; + if (this.skipped.has(id)) return 'skipped'; + return this.latest(id)?.status ?? 'pending'; + } + + // Repaints header, graph, code gutter and controls. Timers are updated every frame. + private changed() { + const { ui } = this; + ui.status.className = `pill st-${this.status}`; + ui.status.replaceChildren(h('i', 'st'), document.createTextNode(LABEL[this.status])); + ui.run.textContent = this.runId ? `run ${this.runId}` : ''; + + for (const [id, g] of this.gnodes) g.setAttribute('class', `gn ${g.dataset.kind} st-${this.stateOf(id)}`); + // An edge lights up when its source finished (or was undone) and its target ran. + const ran = (st: string) => st !== 'pending' && st !== 'skipped'; + const finished = (st: string) => st === 'completed' || st === 'compensated'; + for (const g of this.gedges) { + const from = this.stateOf(g.dataset.from!), to = this.stateOf(g.dataset.to!); + g.classList.toggle('drawn', finished(from) && ran(to)); + g.classList.toggle('dim', from === 'skipped' || to === 'skipped'); + } + // On a narrow screen the graph scrolls sideways; keep the active step in view. + const active = [...this.gnodes].find(([id]) => ['running', 'waiting', 'compensating'].includes(this.stateOf(id)))?.[1]; + const wrap = active?.closest('.graph-wrap'); + if (active && wrap && wrap.scrollWidth > wrap.clientWidth) { + const a = active.getBoundingClientRect(), w = wrap.getBoundingClientRect(); + if (a.left < w.left || a.right > w.right) wrap.scrollBy({ left: a.left + a.width / 2 - (w.left + w.width / 2) }); + } + + for (const [name, els] of this.lines) { + const r = this.rows.findLast((x) => x.name === name); + for (const el of els) el.className = `line${r ? ` on st-${r.status}` : ''}`; + } + + const parked = this.parked?.step; + const actions: HTMLElement[] = []; + if (parked?.wait && !this.answers.has(parked.step)) { + for (const a of parked.wait.actions) { + const b = h('button', 'act', a.label); + b.onclick = () => this.answer(parked.step, a.value, a.call); + actions.push(b); + } + } + if (parked?.sleep && !this.answers.has(parked.step)) { + const b = h('button', 'act', 'Skip ahead'); + b.onclick = () => this.answer(parked.step, 'woke', 'Skipped ahead to the wake-up time.'); + actions.push(b); + } + if (['completed', 'failed', 'compensated'].includes(this.status)) { + const b = h('button', 'act primary', 'Run again'); + b.onclick = () => this.start(); + actions.push(b); + } + ui.actions.replaceChildren(...actions); + } + + // Live durations and notes under each node. + private frame() { + const now = this.tEnd || this.now(); + for (const [id, g] of this.gnodes) { + const meta = g.querySelector('.meta'); + if (!meta) continue; + const st = this.stateOf(id); + const r = this.latest(id); + let text = ''; + if (st === 'skipped') text = 'not run'; + else if (r) { + const d = fmt((r.t1 ?? now) - r.t0); + const attempt = r.attempt > 1 ? `attempt ${r.attempt}, ` : ''; + text = + r.status === 'waiting' ? (this.steps.get(r.name)?.sleep ? `sleeping ${d}` : `waiting ${d}`) + : r.status === 'failed' ? `${attempt}failed` + : r.status === 'compensated' ? 'undone' + : r.status === 'compensating' ? 'undoing' + : `${attempt}${d}`; + } + if (meta.textContent !== text) meta.textContent = text; + } + requestAnimationFrame(() => this.frame()); + } +} diff --git a/site/src/sim/layout.ts b/site/src/sim/layout.ts new file mode 100644 index 0000000..7265491 --- /dev/null +++ b/site/src/sim/layout.ts @@ -0,0 +1,120 @@ +// Lays a workflow spec out as a left-to-right graph: sequential steps become +// columns, parallel steps stack in one column, a branch is a gate followed by +// one row per clause, and compensations sit in a lane underneath. Computed at +// build time; the engine only toggles classes on what this produces. +import type { Node, Spec, Step } from './engine'; + +export type GNode = { id: string; label: string; kind: 'start' | 'step' | 'gate' | 'end' | 'comp'; x: number; y: number; w: number }; +export type GEdge = { from: string; to: string; d: string; label?: string; lx?: number; ly?: number; comp?: boolean }; +export type Graph = { width: number; height: number; nodes: GNode[]; edges: GEdge[] }; + +type Cell = { id: string; label: string; kind: GNode['kind']; col: number; row: number; room?: number }; +type Link = { from: string; to: string; label?: string }; +type Block = { cols: number; rows: number; entry: string[]; exit: string[]; cells: Cell[]; links: Link[] }; + +const ROW = 96; +const PAD = 26; +const GAP = 48; +// A gate's column is as wide as its longest branch label, so the label chips fit +// between the gate and its clauses. +const pill = (c: Cell) => (c.kind === 'start' || c.kind === 'end' ? 64 : c.kind === 'gate' ? (c.room ?? 96) : Math.round(c.label.length * 7.5 + 40)); + +const single = (id: string, label: string, kind: Cell['kind']): Block => ({ + cols: 1, rows: 1, entry: [id], exit: [id], cells: [{ id, label, kind, col: 0, row: 0 }], links: [], +}); +const shift = (b: Block, dc: number, dr: number): Block => ({ ...b, cells: b.cells.map((c) => ({ ...c, col: c.col + dc, row: c.row + dr })) }); + +// Blocks one after another, vertically centred on each other. +function seq(blocks: Block[]): Block { + const rows = Math.max(1, ...blocks.map((b) => b.rows)); + const cells: Cell[] = []; + const links: Link[] = []; + let col = 0; + blocks.forEach((b, i) => { + cells.push(...shift(b, col, (rows - b.rows) / 2).cells); + links.push(...b.links); + if (i > 0) for (const from of blocks[i - 1].exit) for (const to of b.entry) links.push({ from, to }); + col += b.cols; + }); + return { cols: col, rows, entry: blocks[0].entry, exit: blocks.at(-1)!.exit, cells, links }; +} + +// Blocks on top of each other (parallel steps, branch clauses). +function stack(blocks: Block[]): Block { + const cells: Cell[] = []; + const links: Link[] = []; + let row = 0; + for (const b of blocks) { + cells.push(...shift(b, 0, row).cells); + links.push(...b.links); + row += b.rows; + } + return { cols: Math.max(...blocks.map((b) => b.cols)), rows: row, entry: blocks.flatMap((b) => b.entry), exit: blocks.flatMap((b) => b.exit), cells, links }; +} + +function block(n: Node): Block { + if ('parallel' in n) return stack(n.parallel.map((s) => single(s.step, s.step, 'step'))); + if ('branch' in n) { + const gate = `branch:${n.branch}`; + const clauses = Object.entries(n.clauses).map(([key, nodes]) => ({ key, b: seq(nodes.map(block)) })); + const body = stack(clauses.map((c) => c.b)); + const rows = Math.max(1, body.rows); + const labeled: Link[] = clauses.flatMap((c) => c.b.entry.map((to) => ({ from: gate, to, label: c.key === '_' ? 'otherwise' : c.key }))); + return { + cols: 1 + body.cols, rows, entry: [gate], exit: body.exit, + cells: [{ id: gate, label: n.branch, kind: 'gate', col: 0, row: (rows - 1) / 2, room: Math.max(96, ...labeled.map((l) => l.label!.length * 7.2 + 64)) }, ...shift(body, 1, 0).cells], + links: [...labeled, ...body.links], + }; + } + return single(n.step, n.step, 'step'); +} + +// Steps that declare a compensation, in the order they run. +function compensated(nodes: Node[]): Step[] { + return nodes.flatMap((n) => ('parallel' in n ? n.parallel : 'branch' in n ? Object.values(n.clauses).flatMap(compensated) : [n])).filter((s) => s.compensate); +} + +export function layout(spec: Spec): Graph { + const main = seq([single('start', 'start', 'start'), ...spec.nodes.map(block), single('end', 'done', 'end')]); + const comps = compensated(spec.nodes); + const cells = [...main.cells]; + const links: Link[] = [...main.links]; + const compRow = main.rows; + for (const s of comps) { + const owner = cells.find((c) => c.id === s.step)!; + cells.push({ id: `comp:${s.compensate}`, label: s.compensate!, kind: 'comp', col: owner.col, row: compRow }); + } + + // Column widths fit their widest node. + const widths: number[] = []; + for (const c of cells) widths[c.col] = Math.max(widths[c.col] ?? 0, pill(c)); + const xs: number[] = []; + widths.reduce((x, w, i) => ((xs[i] = x + w / 2), x + w + GAP), PAD); + // A gate sits at the left of its wide column; the space to its right holds the branch labels. + const nodes: GNode[] = cells.map((c) => ({ + id: c.id, label: c.label, kind: c.kind, w: c.kind === 'gate' ? 40 : pill(c), + x: c.kind === 'gate' ? xs[c.col] - widths[c.col] / 2 + 28 : xs[c.col], y: PAD + c.row * ROW + ROW / 2, + })); + const at = new Map(nodes.map((n) => [n.id, n])); + + const edges: GEdge[] = links.map(({ from, to, label }) => { + const a = at.get(from)!, b = at.get(to)!; + const sx = a.x + a.w / 2, tx = b.x - b.w / 2, mx = (sx + tx) / 2; + // Branch labels ride on the middle of their edge. + return { from, to, label, d: `M${sx} ${a.y} C${mx} ${a.y} ${mx} ${b.y} ${tx} ${b.y}`, lx: mx, ly: (a.y + b.y) / 2 }; + }); + // Compensation lane: each step points down to its undo, and the undos chain right to left. + comps.forEach((s, i) => { + const step = at.get(s.step)!, comp = at.get(`comp:${s.compensate}`)!; + edges.push({ from: s.step, to: comp.id, comp: true, d: `M${step.x} ${step.y + 17} V${comp.y - 17}` }); + const prev = comps[i - 1]; + if (prev) { + const left = at.get(`comp:${prev.compensate}`)!; + edges.push({ from: comp.id, to: left.id, comp: true, d: `M${comp.x - comp.w / 2} ${comp.y} H${left.x + left.w / 2}` }); + } + }); + + const width = Math.round(xs.at(-1)! + widths.at(-1)! / 2 + PAD); + const height = Math.round(PAD * 2 + (compRow + (comps.length ? 1 : 0)) * ROW); + return { width, height, nodes, edges }; +} diff --git a/site/src/sim/sim.css b/site/src/sim/sim.css new file mode 100644 index 0000000..fc86263 --- /dev/null +++ b/site/src/sim/sim.css @@ -0,0 +1,140 @@ +/* The run is always the Night palette, in both site themes. + Status shapes follow durable_dashboard DESIGN.md §4. */ +.sim { + --s-bg: #111a2e; + --s-deep: #0c1322; + --s-rule: #22304a; + --s-ink: #eaeff9; + --s-ink-2: #9ca8c2; + --s-ink-3: #8390ab; + --s-accent: #a9c1ff; + --s-run: #a9c1ff; + --s-ok: #2bb3a3; + --s-fail: #f0718a; + --s-wait: #ffc27a; + --s-comp: #9ebcfd; + --s-off: #6b7380; + background: var(--s-bg); + color: var(--s-ink); + border: 1px solid var(--s-rule); + border-radius: 20px; + overflow: hidden; + font: 14px/1.55 var(--sl-font, 'Sora Variable', system-ui, sans-serif); +} +.sim .head { + display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; min-height: 58px; padding: 10px 22px; + border-bottom: 1px solid var(--s-rule); font: 13px var(--sl-font-mono, monospace); box-sizing: border-box; +} +.sim .wf { font-weight: 500; } +.sim .runid { color: var(--s-ink-3); } + +.st-pending, .st-skipped { --c: var(--s-off); } +.st-running { --c: var(--s-run); } +.st-waiting { --c: var(--s-wait); } +.st-completed { --c: var(--s-ok); } +.st-failed { --c: var(--s-fail); } +.st-compensating, .st-compensated { --c: var(--s-comp); } + +.sim .pill { + display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px; border-radius: 999px; + font: 13px var(--sl-font, sans-serif); background: color-mix(in srgb, var(--c) 16%, transparent); + color: color-mix(in srgb, var(--c) 60%, var(--s-ink)); +} +.sim .pill .st { width: 8px; height: 8px; border-radius: 50%; background: var(--c); } +.sim .pill.st-pending .st { background: none; border: 1.5px dashed var(--c); box-sizing: border-box; } +.sim .pill.st-waiting .st { background: none; border: 2px solid var(--c); box-sizing: border-box; } +.sim .pill.st-failed .st { border-radius: 1px; transform: rotate(45deg) scale(0.85); } + +/* Controls sit in the head, right-aligned. */ +.sim .controls { margin-left: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; font-family: var(--sl-font, sans-serif); } +.sim .actions { display: flex; flex-wrap: wrap; gap: 8px; } +.sim .act { + height: 36px; padding: 0 16px; border-radius: 999px; cursor: pointer; font: 500 13.5px var(--sl-font, sans-serif); + color: var(--s-ink); background: transparent; border: 1px solid var(--s-rule); transition: border-color 0.2s; +} +.sim .act:hover { border-color: var(--s-ink-3); } +.sim .act.primary { background: var(--s-accent); border-color: var(--s-accent); color: #0c172e; font-weight: 600; } +.sim .act:focus-visible, .sim .toggle input:focus-visible { outline: 2px solid var(--s-accent); outline-offset: 2px; } +.sim .toggle { display: inline-flex; align-items: center; gap: 8px; color: var(--s-ink-2); cursor: pointer; font-size: 13.5px; } +.sim .toggle input { accent-color: var(--s-fail); margin: 0; } + +/* The graph: scales down to fit, but never below a readable size (then it scrolls). */ +.sim .graph-wrap { + overflow-x: auto; scroll-behavior: smooth; padding: 18px 16px; scrollbar-width: thin; scrollbar-color: var(--s-rule) transparent; + background: + radial-gradient(circle at 1px 1px, rgba(255, 255, 255, 0.05) 1px, transparent 0) 0 0 / 22px 22px, + var(--s-deep); + border-bottom: 1px solid var(--s-rule); +} +.sim .graph { display: block; width: 100%; max-width: calc(var(--w) * 1.3); min-width: calc(var(--w) * 0.8); height: auto; margin: 0 auto; overflow: visible; } + +.sim .ge .rail { fill: none; stroke: rgba(255, 255, 255, 0.1); stroke-width: 1.5; } +.sim .ge .ink { fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 0.55s cubic-bezier(0.4, 0, 0.2, 1); } +.sim .ge.drawn .ink { stroke-dashoffset: 0; } +.sim .ge.dim .rail { stroke-dasharray: 3 4; opacity: 0.5; } +.sim .ge.comp .rail { stroke-dasharray: 3 4; } +.sim .ge.comp .ink { stroke: var(--s-comp); stroke-dasharray: 1; } +.sim .elabel rect { fill: var(--s-deep); stroke: rgba(255, 255, 255, 0.12); } +.sim .elabel text { font: 11.5px var(--sl-font-mono, monospace); fill: var(--s-ink-2); } +.sim .ge.drawn .elabel rect { stroke: color-mix(in srgb, var(--s-accent) 50%, transparent); } +.sim .ge.drawn .elabel text { fill: var(--s-ink); } +.sim .ge.dim .elabel { opacity: 0.45; } + +.sim .gn .shape { fill: #141f36; stroke: color-mix(in srgb, var(--c) 55%, transparent); stroke-width: 1.5; transition: stroke 0.3s, fill 0.3s; } +.sim .gn .dot { fill: var(--c); transition: fill 0.3s; } +.sim .gn .label { font: 12.5px var(--sl-font-mono, monospace); fill: var(--s-ink); transition: fill 0.3s; } +.sim .gn .label.small { font-size: 11.5px; fill: var(--s-ink-2); } +.sim .gn .meta { font: 11px var(--sl-font, sans-serif); fill: var(--s-ink-3); } +.sim .gn.st-pending .label, .sim .gn.st-skipped .label { fill: var(--s-ink-3); } +.sim .gn.st-pending .dot { fill: none; stroke: var(--c); stroke-width: 1.5; stroke-dasharray: 2 2; } +.sim .gn.st-skipped { opacity: 0.45; } +.sim .gn.st-skipped .label { text-decoration: line-through; } +.sim .gn.st-running .shape, .sim .gn.st-compensating .shape { fill: color-mix(in srgb, var(--c) 14%, #141f36); stroke: var(--c); } +.sim .gn.st-running .dot, .sim .gn.st-compensating .dot { animation: sim-beat 1.1s ease-in-out infinite; transform-box: fill-box; transform-origin: center; } +.sim .gn.st-waiting .shape { fill: color-mix(in srgb, var(--c) 10%, #141f36); stroke: var(--c); stroke-dasharray: 5 4; animation: sim-march 1s linear infinite; } +.sim .gn.st-waiting .dot { fill: none; stroke: var(--c); stroke-width: 2; } +.sim .gn.st-completed .shape { stroke: color-mix(in srgb, var(--c) 70%, transparent); } +.sim .gn.st-failed .shape { fill: color-mix(in srgb, var(--c) 14%, #141f36); stroke: var(--c); } +.sim .gn.st-failed .meta { fill: var(--s-fail); } +.sim .gn.comp.st-pending { opacity: 0.4; } +.sim .gn.comp.st-pending .shape { stroke-dasharray: 4 4; } +.sim .gn.comp.st-compensated .shape { fill: color-mix(in srgb, var(--c) 12%, #141f36); } +/* Start, gate and end are small markers. */ +.sim .gn.start .shape, .sim .gn.end .shape { stroke-width: 2; } +.sim .gn.start.st-completed .shape { fill: var(--s-ok); } +.sim .gn.end.st-completed .shape { fill: var(--s-wait); stroke: var(--s-wait); filter: drop-shadow(0 0 10px rgba(255, 194, 122, 0.6)); } +.sim .gn.end.st-compensated .shape { fill: var(--s-comp); } +.sim .gn.end.st-failed .shape { fill: var(--s-fail); } +.sim .gn.gate.st-completed .shape { fill: color-mix(in srgb, var(--s-accent) 22%, #141f36); stroke: var(--s-accent); } +@keyframes sim-beat { 50% { transform: scale(1.5); opacity: 0.6; } } +@keyframes sim-march { to { stroke-dashoffset: -18; } } + +/* Code + log */ +.sim .foot { display: flex; flex-wrap: wrap; } +.sim .code { flex: 1.5 1 440px; min-width: 0; border-right: 1px solid var(--s-rule); background: var(--s-deep); } +.sim .file { padding: 12px 22px 0; font: 12px var(--sl-font-mono, monospace); color: var(--s-ink-3); } +.sim .code pre.astro-code { + margin: 0; padding: 10px 0 16px; background: transparent !important; font: 12.5px/1.7 var(--sl-font-mono, monospace); + overflow-x: auto; scrollbar-width: thin; scrollbar-color: var(--s-rule) transparent; border: 0; +} +.sim .code .line { display: inline-block; min-width: 100%; padding: 0 22px; box-sizing: border-box; transition: background-color 0.2s; } +.sim .code .line.on { box-shadow: inset 3px 0 var(--c); } +.sim .code .line.on.st-running, .sim .code .line.on.st-waiting, .sim .code .line.on.st-compensating { background: color-mix(in srgb, var(--c) 10%, transparent); } +.sim .log { + flex: 1 1 280px; min-width: 0; list-style: none; margin: 0; padding: 14px 22px; max-height: 460px; overflow-y: auto; + color: var(--s-ink-2); font-size: 13px; scrollbar-width: thin; scrollbar-color: var(--s-rule) transparent; +} +.sim .log li { display: grid; grid-template-columns: 48px 1fr; gap: 8px; padding: 2px 0; margin: 0; } +.sim .log li:last-child { color: var(--s-ink); } +.sim .log .at { font: 11.5px var(--sl-font-mono, monospace); padding-top: 2px; color: var(--s-ink-3); } +.sim .log code { font: 12px var(--sl-font-mono, monospace); color: var(--s-ink); background: none; padding: 0; } + +@media (max-width: 640px) { + .sim .head, .sim .log { padding-left: 14px; padding-right: 14px; } + .sim .controls { margin-left: 0; width: 100%; min-height: 36px; } + .sim .code { border-right: 0; border-bottom: 1px solid var(--s-rule); max-height: 320px; overflow: auto; } +} +@media (prefers-reduced-motion: reduce) { + .sim * { animation: none !important; transition: none !important; } + .sim .graph-wrap { scroll-behavior: auto; } +} diff --git a/site/src/styles/fonts.css b/site/src/styles/fonts.css new file mode 100644 index 0000000..071eb2d --- /dev/null +++ b/site/src/styles/fonts.css @@ -0,0 +1,37 @@ +/* Self-hosted fonts (files from Fontsource), declared here rather than through + Fontsource's CSS so we can use font-display: optional. Together with the + preloads in FontPreload.astro, text paints in Sora from the first frame and + never swaps (no reflow on page load); if a font isn't ready in time, that one + page view keeps the fallback instead of shifting under the reader. */ +@font-face { + font-family: 'Sora Variable'; + font-style: normal; + font-display: optional; + font-weight: 100 800; + src: url('../../node_modules/@fontsource-variable/sora/files/sora-latin-wght-normal.woff2') format('woff2-variations'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { + font-family: 'Sora Variable'; + font-style: normal; + font-display: optional; + font-weight: 100 800; + src: url('../../node_modules/@fontsource-variable/sora/files/sora-latin-ext-wght-normal.woff2') format('woff2-variations'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: 'Geist Mono'; + font-style: normal; + font-display: optional; + font-weight: 400; + src: url('../../node_modules/@fontsource/geist-mono/files/geist-mono-latin-400-normal.woff2') format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { + font-family: 'Geist Mono'; + font-style: normal; + font-display: optional; + font-weight: 500; + src: url('../../node_modules/@fontsource/geist-mono/files/geist-mono-latin-500-normal.woff2') format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/site/src/styles/theme.css b/site/src/styles/theme.css new file mode 100644 index 0000000..20539e6 --- /dev/null +++ b/site/src/styles/theme.css @@ -0,0 +1,165 @@ +/* Blue hour: Starlight's tokens set to the landing page's palette. + Dark is the main look; light mirrors it for people who choose it. */ +:root { + --sl-font: 'Sora Variable', system-ui, sans-serif; + --sl-font-mono: 'Geist Mono', ui-monospace, monospace; + + --sl-color-accent-low: #1d2f55; + --sl-color-accent: #6997fc; + --sl-color-accent-high: #a9c1ff; + --sl-color-white: #eaeff9; + --sl-color-gray-1: #d6def0; + --sl-color-gray-2: #b2bdd6; + --sl-color-gray-3: #9ca8c2; + --sl-color-gray-4: #637294; + --sl-color-gray-5: #22304a; + --sl-color-gray-6: #111a2e; + --sl-color-black: #0a0f1e; +} + +:root[data-theme='light'] { + --sl-color-accent-low: #e0eaff; + --sl-color-accent: #3a6ad8; + --sl-color-accent-high: #21438e; + --sl-color-white: #0e182d; + --sl-color-gray-1: #1d2840; + --sl-color-gray-2: #323f5a; + --sl-color-gray-3: #4e5d7e; + --sl-color-gray-4: #8793ae; + --sl-color-gray-5: #d1d8e8; + --sl-color-gray-6: #eaeef8; + --sl-color-gray-7: #f4f7fd; + --sl-color-black: #ffffff; +} + +/* Headings: tight, like the concept. */ +.sl-markdown-content :is(h1, h2, h3) { letter-spacing: -0.02em; } +h1#_top { letter-spacing: -0.035em; } + +/* Starlight's pill-shaped primary links match the concept's buttons. */ +.sl-link-button { border-radius: 999px; } + +/* Wordmark in ink, not the accent. */ +.site-title { color: var(--sl-color-white); font-weight: 600; letter-spacing: -0.02em; } + +/* Page-to-page navigation without the blink: the browser cross-fades the + content and keeps the header and sidebar where they are. Browsers without + cross-document view transitions just navigate as before. */ +@view-transition { navigation: auto; } +/* Always reserve the scrollbar's space, so nothing slides sideways when a long + page grows a scrollbar mid-load or when moving between short and long pages. */ +html { scrollbar-gutter: stable; } +header.header { view-transition-name: sl-header; } +/* The visible sidebar is the fixed pane; nav.sidebar itself is 0px tall, so naming it captured nothing. */ +.sidebar-pane { view-transition-name: sl-sidebar; } +::view-transition-old(root), ::view-transition-new(root) { animation-duration: 180ms; } +@media (prefers-reduced-motion: reduce) { + @view-transition { navigation: none; } +} + +/* README badges sit on one line, with their height reserved before they load. */ +.sl-markdown-content p:has(> a > img[src*='shields.io'], > a > img[src*='badge.svg']) { display: flex; flex-wrap: wrap; gap: 6px; } +.sl-markdown-content a > img[src*='shields.io'], .sl-markdown-content a > img[src*='badge.svg'] { display: block; height: 20px; width: auto; margin: 0; } + +/* Changelog: a release timeline (the markup comes from src/changelog.ts). + Each version heading carries a dot on the rail and draws the rail down from it; + the next dot paints over the line, and the content box clips the last one. */ +.sl-markdown-content:has(.cl-meta) { + --cl-x: 2rem; + --cl-dot: 0.8rem; + --cl-feat: var(--sl-color-accent-high); + --cl-fix: #ff8fa6; + --cl-perf: #ffc27a; + --cl-refactor: #7cc4ff; + --cl-docs: #5fd4c4; + padding-left: var(--cl-x); + overflow-y: clip; +} +:root[data-theme='light'] .sl-markdown-content:has(.cl-meta) { + --cl-fix: #c2264b; + --cl-perf: #9a5200; + --cl-refactor: #1d6aae; + --cl-docs: #0b7468; +} +.sl-markdown-content:has(.cl-meta) > p:first-child { color: var(--sl-color-gray-3); font-size: var(--sl-text-sm); } +.sl-markdown-content .cl-version { + position: relative; margin-top: 3.5rem; + font: 600 1.9rem/1.2 var(--sl-font); letter-spacing: -0.03em; font-variant-numeric: tabular-nums; +} +.sl-markdown-content p + .cl-version { margin-top: 2.25rem; } +.cl-version::before, .cl-version::after { content: ''; position: absolute; left: calc(-1 * var(--cl-x) + 0.1rem); } +.cl-version::before { + z-index: 1; top: 0.32em; width: var(--cl-dot); height: var(--cl-dot); box-sizing: border-box; border-radius: 50%; + background: var(--sl-color-black); border: 2px solid var(--sl-color-gray-4); +} +.cl-version::after { + top: calc(0.32em + var(--cl-dot)); height: 100000px; width: 2px; + margin-left: calc(var(--cl-dot) / 2 - 1px); background: var(--sl-color-gray-5); +} +.cl-version:has(+ .cl-meta .cl-latest)::before { + background: var(--sl-color-accent); border-color: var(--sl-color-accent-high); + box-shadow: 0 0 0 4px var(--sl-color-accent-low); +} +.sl-markdown-content .cl-meta { + display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; margin-top: 0.5rem; + font-size: var(--sl-text-sm); color: var(--sl-color-gray-3); +} +.cl-badge { + display: inline-flex; align-items: center; height: 1.35rem; padding: 0 0.55rem; border-radius: 999px; + font-size: 0.75rem; font-weight: 600; line-height: 1; +} +.cl-latest { background: var(--sl-color-accent-low); color: var(--sl-color-accent-high); } +.cl-pre { border: 1px solid var(--sl-color-gray-5); color: var(--sl-color-gray-3); } +.cl-breaking { margin-right: 0.35rem; vertical-align: 0.1em; color: var(--cl-fix); background: color-mix(in srgb, var(--cl-fix) 15%, transparent); } +.sl-markdown-content a.cl-compare { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--sl-color-accent-high); text-decoration: none; } +.sl-markdown-content a.cl-compare:hover { text-decoration: underline; } +.cl-compare::before, .cl-group::before { + content: ''; flex: none; width: 1rem; height: 1rem; background: currentColor; + mask: var(--cl-icon) center / contain no-repeat; +} +.cl-compare { --cl-icon: url("data:image/svg+xml;utf8,"); } + +/* Groups: a colored label with its icon, entries aligned under the label text. */ +.sl-markdown-content .cl-group { + display: flex; align-items: center; gap: 0.55rem; margin-top: 1.75rem; + font-size: 1rem; font-weight: 600; letter-spacing: -0.01em; color: var(--cl-c); +} +.sl-markdown-content .cl-group + ul { list-style: none; padding-left: 1.55rem; margin-top: 0.55rem; } +.sl-markdown-content .cl-group + ul > li { position: relative; margin-top: 0.4rem; } +.cl-group + ul > li::before { + content: ''; position: absolute; left: -1.1rem; top: 0.68em; width: 5px; height: 5px; border-radius: 50%; + background: var(--cl-c); opacity: 0.7; +} +.cl-feat, .cl-feat + ul { + --cl-c: var(--cl-feat); + --cl-icon: url("data:image/svg+xml;utf8,"); +} +.cl-fix, .cl-fix + ul { + --cl-c: var(--cl-fix); + --cl-icon: url("data:image/svg+xml;utf8,"); +} +.cl-perf, .cl-perf + ul { + --cl-c: var(--cl-perf); + --cl-icon: url("data:image/svg+xml;utf8,"); +} +.cl-refactor, .cl-refactor + ul { + --cl-c: var(--cl-refactor); + --cl-icon: url("data:image/svg+xml;utf8,"); +} +.cl-docs, .cl-docs + ul { + --cl-c: var(--cl-docs); + --cl-icon: url("data:image/svg+xml;utf8,"); +} + +/* Commit hashes: a quiet chip at the end of each entry. */ +.sl-markdown-content a.cl-commit { + display: inline-block; margin-left: 0.15rem; padding: 0 0.4rem; border-radius: 0.35rem; + border: 1px solid var(--sl-color-gray-5); vertical-align: 0.08em; + font: 500 0.72rem/1.55 var(--sl-font-mono); color: var(--sl-color-gray-3); text-decoration: none; white-space: nowrap; +} +.sl-markdown-content a.cl-commit:hover { color: var(--sl-color-accent-high); border-color: var(--sl-color-accent); } + +@media (max-width: 50rem) { + .sl-markdown-content:has(.cl-meta) { --cl-x: 1.5rem; } + .sl-markdown-content .cl-version { font-size: 1.45rem; } +} diff --git a/site/tsconfig.json b/site/tsconfig.json new file mode 100644 index 0000000..8bf91d3 --- /dev/null +++ b/site/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} diff --git a/site/wrangler.jsonc b/site/wrangler.jsonc new file mode 100644 index 0000000..b68dee0 --- /dev/null +++ b/site/wrangler.jsonc @@ -0,0 +1,17 @@ +// durable.wavezync.com: the built Astro site (dist/), served as Workers static assets. +// The site is fully static, so there is no Worker script (`main`) and no ASSETS binding. +// `pnpm run deploy` builds the site and deploys it. +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "durable-site", + "compatibility_date": "2026-10-01", + "assets": { + "directory": "./dist", + // Astro writes docs/index.html; /docs redirects to /docs/ (trailingSlash: 'always'). + "html_handling": "auto-trailing-slash", + // Unknown paths get Astro's 404.html with a 404 status. + "not_found_handling": "404-page" + }, + "routes": [{ "pattern": "durable.wavezync.com", "custom_domain": true }], + "observability": { "enabled": true } +} From b030c686ab4244e8df56664ac6b0ad233c9cc7ed Mon Sep 17 00:00:00 2001 From: Kasun Vithanage Date: Thu, 22 Oct 2026 18:48:20 +0530 Subject: [PATCH 2/2] docs: add badges and links to durable.wavezync.com in the READMEs Claude-Session: https://claude.ai/code/session_012aEMFtJKJsMz1vGtbSijGR --- README.md | 28 ++++++++++++++++++++++------ durable/README.md | 12 +++++++++++- durable_dashboard/README.md | 9 +++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c701304..b871331 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -# Durable workspace +# Durable + +[![CI](https://github.com/wavezync/durable/actions/workflows/ci.yml/badge.svg)](https://github.com/wavezync/durable/actions/workflows/ci.yml) +[![durable on Hex](https://img.shields.io/hexpm/v/durable.svg?label=durable)](https://hex.pm/packages/durable) +[![durable_dashboard on Hex](https://img.shields.io/hexpm/v/durable_dashboard.svg?label=durable_dashboard)](https://hex.pm/packages/durable_dashboard) +[![Docs](https://img.shields.io/badge/docs-durable.wavezync.com-ffc27a)](https://durable.wavezync.com/docs/) +[![License](https://img.shields.io/hexpm/l/durable.svg)](LICENSE) + +Durable, reliable, resumable workflows for Elixir. Write workflows as plain +steps; every step is saved, so runs resume after crashes, deploys and long +waits. + +- **Docs, guides and interactive examples:** [durable.wavezync.com](https://durable.wavezync.com) +- **API reference:** [durable](https://hexdocs.pm/durable) and [durable_dashboard](https://hexdocs.pm/durable_dashboard) on HexDocs + +## Workspace This is a path-dep monorepo (pnpm-workspaces style) containing the Durable workflow engine and its surrounding packages. Each subdirectory is an @@ -7,11 +22,12 @@ publishing pipeline. ## Packages -| Path | Package | Description | -| --- | --- | --- | -| [`durable/`](durable/) | `:durable` | Core workflow engine — resumable, reliable workflows with PostgreSQL persistence. | -| [`durable_dashboard/`](durable_dashboard/) | `:durable_dashboard` | LiveView-first web dashboard for monitoring and managing Durable workflows. | -| [`examples/phoenix_demo/`](examples/phoenix_demo/) | (unpublished) | Reference Phoenix app wiring up `:durable` and `:durable_dashboard`. | +| Path | Package | Version | Docs | Description | +| --- | --- | --- | --- | --- | +| [`durable/`](durable/) | `:durable` | [![Hex](https://img.shields.io/hexpm/v/durable.svg)](https://hex.pm/packages/durable) | [HexDocs](https://hexdocs.pm/durable) | Core workflow engine — resumable, reliable workflows with PostgreSQL persistence. | +| [`durable_dashboard/`](durable_dashboard/) | `:durable_dashboard` | [![Hex](https://img.shields.io/hexpm/v/durable_dashboard.svg)](https://hex.pm/packages/durable_dashboard) | [HexDocs](https://hexdocs.pm/durable_dashboard) | LiveView-first web dashboard for monitoring and managing Durable workflows. | +| [`examples/phoenix_demo/`](examples/phoenix_demo/) | (unpublished) | | | Reference Phoenix app wiring up `:durable` and `:durable_dashboard`. | +| [`site/`](site/) | (unpublished) | | [durable.wavezync.com](https://durable.wavezync.com) | [durable.wavezync.com](https://durable.wavezync.com): Astro site. Its docs are the packages' own markdown, read in place (`site/src/docs.ts`). `cd site && pnpm install && pnpm dev` | ## Workspace commands diff --git a/durable/README.md b/durable/README.md index 41b6e25..719920b 100644 --- a/durable/README.md +++ b/durable/README.md @@ -1,10 +1,17 @@ # Durable -[![Build Status](https://github.com/wavezync/durable/actions/workflows/ci.yml/badge.svg)](https://github.com/wavezync/durable/actions/workflows/ci.yml) +[![CI](https://github.com/wavezync/durable/actions/workflows/ci.yml/badge.svg)](https://github.com/wavezync/durable/actions/workflows/ci.yml) [![Hex.pm](https://img.shields.io/hexpm/v/durable.svg)](https://hex.pm/packages/durable) +[![HexDocs](https://img.shields.io/badge/hex-docs-8f75f0.svg)](https://hexdocs.pm/durable) +[![Downloads](https://img.shields.io/hexpm/dt/durable.svg)](https://hex.pm/packages/durable) +[![License](https://img.shields.io/hexpm/l/durable.svg)](https://github.com/wavezync/durable/blob/main/LICENSE) A durable, resumable workflow engine for Elixir. Similar to Temporal/Inngest. +**Docs:** [durable.wavezync.com](https://durable.wavezync.com/docs/) · +**Dashboard:** [`durable_dashboard`](https://hex.pm/packages/durable_dashboard) · +**API:** [HexDocs](https://hexdocs.pm/durable) + ## Features - **Pipeline Model** - Context flows from step to step, simple and explicit @@ -573,6 +580,9 @@ mix durable.cleanup --older-than 24h --dry-run # preview what would be ## Dashboard +[![Hex.pm](https://img.shields.io/hexpm/v/durable_dashboard.svg)](https://hex.pm/packages/durable_dashboard) +[![HexDocs](https://img.shields.io/badge/hex-docs-8f75f0.svg)](https://hexdocs.pm/durable_dashboard) + `durable_dashboard` is a LiveView-first console for monitoring and managing running workflows. Mount it into your Phoenix router with one line: diff --git a/durable_dashboard/README.md b/durable_dashboard/README.md index 807365c..1b35d17 100644 --- a/durable_dashboard/README.md +++ b/durable_dashboard/README.md @@ -1,5 +1,14 @@ # DurableDashboard +[![CI](https://github.com/wavezync/durable/actions/workflows/ci.yml/badge.svg)](https://github.com/wavezync/durable/actions/workflows/ci.yml) +[![Hex.pm](https://img.shields.io/hexpm/v/durable_dashboard.svg)](https://hex.pm/packages/durable_dashboard) +[![HexDocs](https://img.shields.io/badge/hex-docs-8f75f0.svg)](https://hexdocs.pm/durable_dashboard) +[![License](https://img.shields.io/hexpm/l/durable_dashboard.svg)](https://github.com/wavezync/durable/blob/main/LICENSE) + +**Docs:** [durable.wavezync.com](https://durable.wavezync.com/docs/dashboard/) · +**Engine:** [`durable`](https://hex.pm/packages/durable) · +**API:** [HexDocs](https://hexdocs.pm/durable_dashboard) + LiveView-first web console for the [Durable](https://hex.pm/packages/durable) workflow engine.
    + + +
    +
    + + issue_agent.ex + LLM cost $0.00 +
    +
    +
      + {steps.map((s, i) => ( +
    1. + {i > 0 && } + + {/* Narrow cards wrap names at the underscore. */} + {s.id.split('_').map((part, j, all) => (j < all.length - 1 ? <>{part}_ : part))} + +
    2. + ))} +
    +
    +
    +
    +
    +