From 49185d4afc9ac832653abc7d105e782013f218ba Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 11:29:30 -0600 Subject: [PATCH 01/15] Add eslint and prettier format configs. Initial run, excluding mdx/md and astro for now. --- .github/workflows/lint-validate.yml | 3 + package.json | 2 + src/frontend/.prettierignore | 10 + src/frontend/.prettierrc | 28 + src/frontend/astro.config.mjs | 244 +- src/frontend/config/cookie.config.ts | 1327 ++++---- src/frontend/config/head.attrs.ts | 137 +- src/frontend/config/icon-packs.mjs | 51 +- src/frontend/config/locales.ts | 34 +- src/frontend/config/redirects.mjs | 16 +- src/frontend/config/sidebar/sidebar.topics.ts | 2838 ++++++++--------- src/frontend/config/socials.config.ts | 68 +- src/frontend/ec.config.mjs | 14 +- src/frontend/eslint.config.mjs | 88 + src/frontend/lunaria.config.json | 20 +- src/frontend/lunaria/components.ts | 30 +- src/frontend/lunaria/renderer.config.ts | 8 +- src/frontend/lunaria/styles.css | 100 +- src/frontend/package-lock.json | 1197 ++++++- src/frontend/package.json | 14 +- src/frontend/public/site.webmanifest | 2 +- ...ck-data-files.cjs => check-data-files.mjs} | 20 +- src/frontend/scripts/update-github-stats.js | 92 +- src/frontend/scripts/update-integrations.js | 102 +- src/frontend/scripts/update-posts.js | 181 +- .../{write-git-env.cjs => write-git-env.mjs} | 31 +- .../src/components/PivotSelector.astro | 1302 ++++---- src/frontend/src/content.config.ts | 40 +- src/frontend/src/content/i18n/da.json | 2 +- src/frontend/src/content/i18n/de.json | 2 +- src/frontend/src/content/i18n/en.json | 4 +- src/frontend/src/content/i18n/es.json | 2 +- src/frontend/src/content/i18n/fr.json | 2 +- src/frontend/src/content/i18n/hi.json | 2 +- src/frontend/src/content/i18n/id.json | 2 +- src/frontend/src/content/i18n/it.json | 2 +- src/frontend/src/content/i18n/ja.json | 2 +- src/frontend/src/content/i18n/ko.json | 2 +- src/frontend/src/content/i18n/pt-BR.json | 2 +- src/frontend/src/content/i18n/pt-PT.json | 2 +- src/frontend/src/content/i18n/ru.json | 2 +- src/frontend/src/content/i18n/tr.json | 2 +- src/frontend/src/content/i18n/uk.json | 2 +- src/frontend/src/content/i18n/zh-CN.json | 2 +- src/frontend/src/data/aspire-posts.json | 1078 ++----- src/frontend/src/data/testimonials.json | 130 +- .../expressive-code-plugins/disable-copy.mjs | 42 +- src/frontend/src/pages/1ds.js | 6 +- src/frontend/src/pages/rss.xml.js | 5 +- .../prettier-plugin-starlight-steps.mjs | 66 + .../src/styles/cookieconsent-custom.css | 199 +- src/frontend/src/styles/site.css | 1173 +++---- src/frontend/src/utils/helpers.js | 34 +- src/frontend/src/utils/imageImporter.js | 38 +- src/frontend/tsconfig.json | 2 +- 55 files changed, 5971 insertions(+), 4835 deletions(-) create mode 100644 src/frontend/.prettierignore create mode 100644 src/frontend/.prettierrc create mode 100644 src/frontend/eslint.config.mjs rename src/frontend/scripts/{check-data-files.cjs => check-data-files.mjs} (60%) rename src/frontend/scripts/{write-git-env.cjs => write-git-env.mjs} (58%) create mode 100644 src/frontend/src/prettier-plugins/prettier-plugin-starlight-steps.mjs diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index f81b7564..d9d256cd 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -27,6 +27,9 @@ jobs: - name: Install deps run: cd src/frontend && npm ci + - name: Run ESLint + run: cd src/frontend && npm run lint + - name: Astro type check run: cd src/frontend && npx astro check | tee ../astro-check.txt diff --git a/package.json b/package.json index 58c10aa2..134e2aed 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,8 @@ "dev": "cd src/frontend && npm run dev", "build": "cd src/frontend && npm run build", "preview": "cd src/frontend && npm run preview", + "lint": "cd src/frontend && npm run lint", + "format": "cd src/frontend && npm run format", "update:all": "cd src/frontend && npm run update:all" } } \ No newline at end of file diff --git a/src/frontend/.prettierignore b/src/frontend/.prettierignore new file mode 100644 index 00000000..cae3066f --- /dev/null +++ b/src/frontend/.prettierignore @@ -0,0 +1,10 @@ +# Deep Directories +**/node_modules + +# Generated Directories +**/dist +**/build +**/.astro + +# GitHub Actions workflow files +.github/workflows/*.yml \ No newline at end of file diff --git a/src/frontend/.prettierrc b/src/frontend/.prettierrc new file mode 100644 index 00000000..fc9212eb --- /dev/null +++ b/src/frontend/.prettierrc @@ -0,0 +1,28 @@ +{ + "printWidth": 100, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false, + "proseWrap": "never", + "endOfLine": "lf", + "plugins": [ + "prettier-plugin-astro", + "./src/prettier-plugins/prettier-plugin-starlight-steps.mjs" + ], + "overrides": [ + { + "files": "*.astro", + "options": { + "parser": "astro" + } + }, + { + "files": ["*.md", "*.mdx"], + "options": { + "printWidth": 80 + } + } + ] +} diff --git a/src/frontend/astro.config.mjs b/src/frontend/astro.config.mjs index 1e0ca9fd..7af4dcd2 100644 --- a/src/frontend/astro.config.mjs +++ b/src/frontend/astro.config.mjs @@ -7,7 +7,7 @@ import { cookieConfig } from './config/cookie.config'; import { locales } from './config/locales.ts'; import { headAttrs } from './config/head.attrs.ts'; import { socialConfig } from './config/socials.config.ts'; -import catppuccin from "@catppuccin/starlight"; +import catppuccin from '@catppuccin/starlight'; import lunaria from '@lunariajs/starlight'; import mermaid from 'astro-mermaid'; import starlight from '@astrojs/starlight'; @@ -23,127 +23,123 @@ import jopSoftwarecookieconsent from '@jop-software/astro-cookieconsent'; // https://astro.build/config export default defineConfig({ - prefetch: true, - site: 'https://aspire.dev', - trailingSlash: 'always', - redirects: redirects, - integrations: [ - mermaid({ - theme: 'forest', - autoTheme: true, - iconPacks - }), - starlight({ - title: 'Aspire', - defaultLocale: 'root', - locales, - logo: { - src: './src/assets/aspire-logo-32.svg', - replacesTitle: true - }, - editLink: { - baseUrl: 'https://github.com/microsoft/aspire.dev/edit/main/src/frontend/', - }, - favicon: 'favicon.svg', - head: headAttrs, - social: socialConfig, - customCss: [ - '@fontsource-variable/outfit', - './src/styles/site.css', - ], - components: { - EditLink: './src/components/starlight/EditLink.astro', - Footer: './src/components/starlight/Footer.astro', - Head: './src/components/starlight/Head.astro', - Header: './src/components/starlight/Header.astro', - Hero: './src/components/starlight/Hero.astro', - MarkdownContent: './src/components/starlight/MarkdownContent.astro', - Pagination: './src/components/starlight/Pagination.astro', - Search: './src/components/starlight/Search.astro', - Sidebar: './src/components/starlight/Sidebar.astro', - SocialIcons: './src/components/starlight/SocialIcons.astro', - }, - expressiveCode: { - // https://expressive-code.com/guides/themes/#using-bundled-themes - themes: ['laserwave', 'slack-ochin'], - styleOverrides: { borderRadius: '0.5rem', codeFontSize: '1rem' } - }, - plugins: [ - lunaria({ - route: "/i18n", - sync: false - }), - catppuccin(), - starlightSidebarTopics(sidebarTopics, { - exclude: ['**/includes/**/*'] - }), - ...(process.env.CHECK_LINKS - ? [starlightLinksValidator({ - errorOnRelativeLinks: false, - errorOnFallbackPages: false - })] - : []), - starlightScrollToTop({ - // https://frostybee.github.io/starlight-scroll-to-top/svg-paths/ - svgPath: 'M4 16L12 8L20 16', - showTooltip: true, - threshold: 10, - showOnHomepage: true, - tooltipText: { - da: 'Rul op', - de: 'Nach oben scrollen', - en: 'Scroll to top', - es: 'Ir arriba', - fr: 'Retour en haut', - hi: 'ऊपर स्क्रॉल करें', - id: 'Gulir ke atas', - it: 'Torna su', - ja: 'トップへ戻る', - ko: '맨 위로', - 'pt-br': 'Voltar ao topo', - 'pt-pt': 'Voltar ao início', - ru: 'Наверх', - tr: 'Başa dön', - uk: 'Прокрутити вгору', - 'zh-cn': '回到顶部', - } - }), - starlightGitHubAlerts(), - starlightLlmsTxt({ - projectName: 'Aspire', - description: 'Aspire is a polyglot local dev-time orchestration tool chain for building, running, debugging, and deploying distributed applications.', - exclude: [ - 'reference/api/**', - '/reference/api/**', - '**/api/**' - ] - }), - starlightImageZoom({ - showCaptions: true - }), - starlightKbd({ - types: [ - { id: 'mac', label: 'macOS' }, - { id: 'windows', label: 'Windows', default: true }, - { id: 'linux', label: 'Linux' }, - ], - }), - starlightGiscus({ - repo: 'IEvangelist/aspire-docs-discussions', - repoId: 'R_kgDOPYdXEQ', - category: 'General', - categoryId: 'DIC_kwDOPYdXEc4Ctyny', - mapping: 'pathname', - inputPosition: 'bottom', - reactions: true, - lazy: true, - theme: { - light: 'catppuccin_latte', - dark: 'catppuccin_mocha' - } - }) - ], - }), - jopSoftwarecookieconsent(cookieConfig) - ] + prefetch: true, + site: 'https://aspire.dev', + trailingSlash: 'always', + redirects: redirects, + integrations: [ + mermaid({ + theme: 'forest', + autoTheme: true, + iconPacks, + }), + starlight({ + title: 'Aspire', + defaultLocale: 'root', + locales, + logo: { + src: './src/assets/aspire-logo-32.svg', + replacesTitle: true, + }, + editLink: { + baseUrl: 'https://github.com/microsoft/aspire.dev/edit/main/src/frontend/', + }, + favicon: 'favicon.svg', + head: headAttrs, + social: socialConfig, + customCss: ['@fontsource-variable/outfit', './src/styles/site.css'], + components: { + EditLink: './src/components/starlight/EditLink.astro', + Footer: './src/components/starlight/Footer.astro', + Head: './src/components/starlight/Head.astro', + Header: './src/components/starlight/Header.astro', + Hero: './src/components/starlight/Hero.astro', + MarkdownContent: './src/components/starlight/MarkdownContent.astro', + Pagination: './src/components/starlight/Pagination.astro', + Search: './src/components/starlight/Search.astro', + Sidebar: './src/components/starlight/Sidebar.astro', + SocialIcons: './src/components/starlight/SocialIcons.astro', + }, + expressiveCode: { + // https://expressive-code.com/guides/themes/#using-bundled-themes + themes: ['laserwave', 'slack-ochin'], + styleOverrides: { borderRadius: '0.5rem', codeFontSize: '1rem' }, + }, + plugins: [ + lunaria({ + route: '/i18n', + sync: false, + }), + catppuccin(), + starlightSidebarTopics(sidebarTopics, { + exclude: ['**/includes/**/*'], + }), + ...(process.env.CHECK_LINKS + ? [ + starlightLinksValidator({ + errorOnRelativeLinks: false, + errorOnFallbackPages: false, + }), + ] + : []), + starlightScrollToTop({ + // https://frostybee.github.io/starlight-scroll-to-top/svg-paths/ + svgPath: 'M4 16L12 8L20 16', + showTooltip: true, + threshold: 10, + showOnHomepage: true, + tooltipText: { + da: 'Rul op', + de: 'Nach oben scrollen', + en: 'Scroll to top', + es: 'Ir arriba', + fr: 'Retour en haut', + hi: 'ऊपर स्क्रॉल करें', + id: 'Gulir ke atas', + it: 'Torna su', + ja: 'トップへ戻る', + ko: '맨 위로', + 'pt-br': 'Voltar ao topo', + 'pt-pt': 'Voltar ao início', + ru: 'Наверх', + tr: 'Başa dön', + uk: 'Прокрутити вгору', + 'zh-cn': '回到顶部', + }, + }), + starlightGitHubAlerts(), + starlightLlmsTxt({ + projectName: 'Aspire', + description: + 'Aspire is a polyglot local dev-time orchestration tool chain for building, running, debugging, and deploying distributed applications.', + exclude: ['reference/api/**', '/reference/api/**', '**/api/**'], + }), + starlightImageZoom({ + showCaptions: true, + }), + starlightKbd({ + types: [ + { id: 'mac', label: 'macOS' }, + { id: 'windows', label: 'Windows', default: true }, + { id: 'linux', label: 'Linux' }, + ], + }), + starlightGiscus({ + repo: 'IEvangelist/aspire-docs-discussions', + repoId: 'R_kgDOPYdXEQ', + category: 'General', + categoryId: 'DIC_kwDOPYdXEc4Ctyny', + mapping: 'pathname', + inputPosition: 'bottom', + reactions: true, + lazy: true, + theme: { + light: 'catppuccin_latte', + dark: 'catppuccin_mocha', + }, + }), + ], + }), + jopSoftwarecookieconsent(cookieConfig), + ], }); diff --git a/src/frontend/config/cookie.config.ts b/src/frontend/config/cookie.config.ts index d3d31313..a7a2a15d 100644 --- a/src/frontend/config/cookie.config.ts +++ b/src/frontend/config/cookie.config.ts @@ -1,629 +1,712 @@ -import type { CookieConsentConfig } from "@jop-software/astro-cookieconsent"; +import type { CookieConsentConfig } from '@jop-software/astro-cookieconsent'; export const cookieConfig: CookieConsentConfig = { - guiOptions: { + guiOptions: { + consentModal: { + layout: 'box', + position: 'bottom right', + equalWeightButtons: false, + }, + preferencesModal: { + layout: 'bar wide', + position: 'right', + equalWeightButtons: false, + }, + }, + categories: { + necessary: { + enabled: true, + readOnly: true, + }, + analytics: { + enabled: true, + readOnly: false, + }, + advertising: { + enabled: true, + readOnly: false, + }, + }, + language: { + default: 'en', + autoDetect: 'document', + translations: { + en: { consentModal: { - layout: 'box', - position: 'bottom right', - equalWeightButtons: false + title: 'This site uses cookies', + description: + 'We use cookies to enhance your browsing experience, analyze site traffic, and improve our services. By clicking "Accept all," you consent to our use of cookies.', + acceptAllBtn: 'Accept all', + acceptNecessaryBtn: 'Reject all', + showPreferencesBtn: 'Manage preferences', + footer: 'Privacy & Cookies', }, preferencesModal: { - layout: 'bar wide', - position: 'right', - equalWeightButtons: false + title: 'Cookie preferences', + acceptAllBtn: 'Accept all', + acceptNecessaryBtn: 'Reject all', + savePreferencesBtn: 'Save preferences', + closeIconLabel: 'Close', + sections: [ + { + title: 'Cookie usage', + description: + 'We use cookies to provide essential website functionality and improve your experience.', + }, + { + title: 'Strictly necessary Always Enabled', + description: + 'Required for the website to function properly. These cannot be disabled.', + //this field will generate a toggle linked to the 'necessary' category + linkedCategory: 'necessary', + }, + { + title: 'Analytics', + description: + 'Help us understand how visitors interact with our website. All data is anonymized.', + linkedCategory: 'analytics', + }, + { + title: 'More information', + description: + 'For questions about our cookie policy, please contact us.', + }, + ], }, + }, + de: { + consentModal: { + title: 'Diese Website verwendet Cookies', + description: + 'Wir verwenden Cookies, um Ihr Browsing-Erlebnis zu verbessern, den Website-Traffic zu analysieren und unsere Dienste zu verbessern. Indem Sie auf "Alle akzeptieren" klicken, stimmen Sie unserer Verwendung von Cookies zu.', + acceptAllBtn: 'Alle akzeptieren', + acceptNecessaryBtn: 'Alle ablehnen', + showPreferencesBtn: 'Einstellungen verwalten', + footer: + 'Datenschutz & Cookies', + }, + preferencesModal: { + title: 'Cookie-Einstellungen', + acceptAllBtn: 'Alle akzeptieren', + acceptNecessaryBtn: 'Alle ablehnen', + savePreferencesBtn: 'Einstellungen speichern', + closeIconLabel: 'Schließen', + sections: [ + { + title: 'Cookie-Verwendung', + description: + 'Wir verwenden Cookies, um wesentliche Website-Funktionen bereitzustellen und Ihre Erfahrung zu verbessern.', + }, + { + title: 'Unbedingt erforderlich Immer aktiviert', + description: + 'Erforderlich, damit die Website ordnungsgemäß funktioniert. Diese können nicht deaktiviert werden.', + linkedCategory: 'necessary', + }, + { + title: 'Analyse', + description: + 'Helfen Sie uns zu verstehen, wie Besucher mit unserer Website interagieren. Alle Daten werden anonymisiert.', + linkedCategory: 'analytics', + }, + { + title: 'Weitere Informationen', + description: + 'Bei Fragen zu unserer Cookie-Richtlinie kontaktieren Sie uns bitte.', + }, + ], + }, + }, + es: { + consentModal: { + title: 'Este sitio utiliza cookies', + description: + 'Utilizamos cookies para mejorar su experiencia de navegación, analizar el tráfico del sitio y mejorar nuestros servicios. Al hacer clic en "Aceptar todo", acepta nuestro uso de cookies.', + acceptAllBtn: 'Aceptar todo', + acceptNecessaryBtn: 'Rechazar todo', + showPreferencesBtn: 'Administrar preferencias', + footer: + 'Privacidad y cookies', + }, + preferencesModal: { + title: 'Preferencias de cookies', + acceptAllBtn: 'Aceptar todo', + acceptNecessaryBtn: 'Rechazar todo', + savePreferencesBtn: 'Guardar preferencias', + closeIconLabel: 'Cerrar', + sections: [ + { + title: 'Uso de cookies', + description: + 'Utilizamos cookies para proporcionar funcionalidad esencial del sitio web y mejorar su experiencia.', + }, + { + title: 'Estrictamente necesarias Siempre habilitado', + description: + 'Necesarias para que el sitio web funcione correctamente. No se pueden desactivar.', + linkedCategory: 'necessary', + }, + { + title: 'Analíticas', + description: + 'Nos ayudan a entender cómo los visitantes interactúan con nuestro sitio web. Todos los datos son anónimos.', + linkedCategory: 'analytics', + }, + { + title: 'Más información', + description: + 'Para preguntas sobre nuestra política de cookies, por favor contáctenos.', + }, + ], + }, + }, + ja: { + consentModal: { + title: 'このサイトはクッキーを使用しています', + description: + 'ブラウジング体験を向上させ、サイトのトラフィックを分析し、サービスを改善するためにクッキーを使用しています。「すべて受け入れる」をクリックすると、クッキーの使用に同意したことになります。', + acceptAllBtn: 'すべて受け入れる', + acceptNecessaryBtn: 'すべて拒否', + showPreferencesBtn: '設定を管理', + footer: + 'プライバシーとクッキー', + }, + preferencesModal: { + title: 'クッキーの設定', + acceptAllBtn: 'すべて受け入れる', + acceptNecessaryBtn: 'すべて拒否', + savePreferencesBtn: '設定を保存', + closeIconLabel: '閉じる', + sections: [ + { + title: 'クッキーの使用', + description: + 'ウェブサイトの基本的な機能を提供し、ユーザー体験を向上させるためにクッキーを使用しています。', + }, + { + title: '必須 常に有効', + description: + 'ウェブサイトが正常に機能するために必要です。無効にすることはできません。', + linkedCategory: 'necessary', + }, + { + title: '分析', + description: + '訪問者がウェブサイトとどのようにやり取りしているかを理解するのに役立ちます。すべてのデータは匿名化されています。', + linkedCategory: 'analytics', + }, + { + title: '詳細情報', + description: + 'クッキーポリシーに関するご質問は、お問い合わせください。', + }, + ], + }, + }, + fr: { + consentModal: { + title: 'Ce site utilise des cookies', + description: + 'Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et améliorer nos services. En cliquant sur "Tout accepter", vous consentez à notre utilisation de cookies.', + acceptAllBtn: 'Tout accepter', + acceptNecessaryBtn: 'Tout rejeter', + showPreferencesBtn: 'Gérer les préférences', + footer: + 'Confidentialité et cookies', + }, + preferencesModal: { + title: 'Préférences des cookies', + acceptAllBtn: 'Tout accepter', + acceptNecessaryBtn: 'Tout rejeter', + savePreferencesBtn: 'Enregistrer les préférences', + closeIconLabel: 'Fermer', + sections: [ + { + title: 'Utilisation des cookies', + description: + 'Nous utilisons des cookies pour fournir des fonctionnalités essentielles du site web et améliorer votre expérience.', + }, + { + title: 'Strictement nécessaires Toujours activé', + description: + 'Nécessaires au bon fonctionnement du site web. Ils ne peuvent pas être désactivés.', + linkedCategory: 'necessary', + }, + { + title: 'Analytiques', + description: + 'Nous aident à comprendre comment les visiteurs interagissent avec notre site web. Toutes les données sont anonymisées.', + linkedCategory: 'analytics', + }, + { + title: "Plus d'informations", + description: + 'Pour toute question concernant notre politique en matière de cookies, veuillez nous contacter.', + }, + ], + }, + }, + it: { + consentModal: { + title: 'Questo sito utilizza i cookie', + description: + 'Utilizziamo i cookie per migliorare la tua esperienza di navigazione, analizzare il traffico del sito e migliorare i nostri servizi. Cliccando su "Accetta tutto", acconsenti al nostro utilizzo dei cookie.', + acceptAllBtn: 'Accetta tutto', + acceptNecessaryBtn: 'Rifiuta tutto', + showPreferencesBtn: 'Gestisci preferenze', + footer: 'Privacy e cookie', + }, + preferencesModal: { + title: 'Preferenze dei cookie', + acceptAllBtn: 'Accetta tutto', + acceptNecessaryBtn: 'Rifiuta tutto', + savePreferencesBtn: 'Salva preferenze', + closeIconLabel: 'Chiudi', + sections: [ + { + title: 'Utilizzo dei cookie', + description: + 'Utilizziamo i cookie per fornire funzionalità essenziali del sito web e migliorare la tua esperienza.', + }, + { + title: 'Strettamente necessari Sempre abilitato', + description: + 'Necessari per il corretto funzionamento del sito web. Non possono essere disabilitati.', + linkedCategory: 'necessary', + }, + { + title: 'Analitici', + description: + 'Ci aiutano a capire come i visitatori interagiscono con il nostro sito web. Tutti i dati sono anonimizzati.', + linkedCategory: 'analytics', + }, + { + title: 'Ulteriori informazioni', + description: + 'Per domande sulla nostra politica sui cookie, contattaci.', + }, + ], + }, + }, + id: { + consentModal: { + title: 'Situs ini menggunakan cookie', + description: + 'Kami menggunakan cookie untuk meningkatkan pengalaman browsing Anda, menganalisis lalu lintas situs, dan meningkatkan layanan kami. Dengan mengklik "Terima semua", Anda menyetujui penggunaan cookie kami.', + acceptAllBtn: 'Terima semua', + acceptNecessaryBtn: 'Tolak semua', + showPreferencesBtn: 'Kelola preferensi', + footer: 'Privasi & Cookie', + }, + preferencesModal: { + title: 'Preferensi cookie', + acceptAllBtn: 'Terima semua', + acceptNecessaryBtn: 'Tolak semua', + savePreferencesBtn: 'Simpan preferensi', + closeIconLabel: 'Tutup', + sections: [ + { + title: 'Penggunaan cookie', + description: + 'Kami menggunakan cookie untuk menyediakan fungsi penting situs web dan meningkatkan pengalaman Anda.', + }, + { + title: 'Sangat diperlukan Selalu Diaktifkan', + description: + 'Diperlukan agar situs web berfungsi dengan baik. Ini tidak dapat dinonaktifkan.', + linkedCategory: 'necessary', + }, + { + title: 'Analitik', + description: + 'Membantu kami memahami bagaimana pengunjung berinteraksi dengan situs web kami. Semua data dianonimkan.', + linkedCategory: 'analytics', + }, + { + title: 'Informasi lebih lanjut', + description: + 'Untuk pertanyaan tentang kebijakan cookie kami, silakan hubungi kami.', + }, + ], + }, + }, + 'zh-cn': { + consentModal: { + title: '本网站使用Cookie', + description: + '我们使用Cookie来改善您的浏览体验,分析网站流量并改进我们的服务。点击"全部接受"即表示您同意我们使用Cookie。', + acceptAllBtn: '全部接受', + acceptNecessaryBtn: '全部拒绝', + showPreferencesBtn: '管理偏好设置', + footer: '隐私和Cookie', + }, + preferencesModal: { + title: 'Cookie偏好设置', + acceptAllBtn: '全部接受', + acceptNecessaryBtn: '全部拒绝', + savePreferencesBtn: '保存偏好设置', + closeIconLabel: '关闭', + sections: [ + { + title: 'Cookie使用', + description: '我们使用Cookie来提供基本的网站功能并改善您的体验。', + }, + { + title: '严格必要 始终启用', + description: '网站正常运行所必需的。这些无法禁用。', + linkedCategory: 'necessary', + }, + { + title: '分析', + description: '帮助我们了解访问者如何与我们的网站互动。所有数据都已匿名化。', + linkedCategory: 'analytics', + }, + { + title: '更多信息', + description: + '有关我们Cookie政策的问题,请联系我们。', + }, + ], + }, + }, + 'pt-br': { + consentModal: { + title: 'Este site usa cookies', + description: + 'Usamos cookies para melhorar sua experiência de navegação, analisar o tráfego do site e melhorar nossos serviços. Ao clicar em "Aceitar tudo", você consente com nosso uso de cookies.', + acceptAllBtn: 'Aceitar tudo', + acceptNecessaryBtn: 'Rejeitar tudo', + showPreferencesBtn: 'Gerenciar preferências', + footer: + 'Privacidade e Cookies', + }, + preferencesModal: { + title: 'Preferências de cookies', + acceptAllBtn: 'Aceitar tudo', + acceptNecessaryBtn: 'Rejeitar tudo', + savePreferencesBtn: 'Salvar preferências', + closeIconLabel: 'Fechar', + sections: [ + { + title: 'Uso de cookies', + description: + 'Usamos cookies para fornecer funcionalidade essencial do site e melhorar sua experiência.', + }, + { + title: 'Estritamente necessários Sempre ativado', + description: + 'Necessários para que o site funcione corretamente. Estes não podem ser desativados.', + linkedCategory: 'necessary', + }, + { + title: 'Análise', + description: + 'Nos ajudam a entender como os visitantes interagem com nosso site. Todos os dados são anonimizados.', + linkedCategory: 'analytics', + }, + { + title: 'Mais informações', + description: + 'Para dúvidas sobre nossa política de cookies, por favor entre em contato.', + }, + ], + }, + }, + 'pt-pt': { + consentModal: { + title: 'Este site utiliza cookies', + description: + 'Utilizamos cookies para melhorar a sua experiência de navegação, analisar o tráfego do site e melhorar os nossos serviços. Ao clicar em "Aceitar tudo", consente a nossa utilização de cookies.', + acceptAllBtn: 'Aceitar tudo', + acceptNecessaryBtn: 'Rejeitar tudo', + showPreferencesBtn: 'Gerir preferências', + footer: + 'Privacidade e Cookies', + }, + preferencesModal: { + title: 'Preferências de cookies', + acceptAllBtn: 'Aceitar tudo', + acceptNecessaryBtn: 'Rejeitar tudo', + savePreferencesBtn: 'Guardar preferências', + closeIconLabel: 'Fechar', + sections: [ + { + title: 'Utilização de cookies', + description: + 'Utilizamos cookies para fornecer funcionalidades essenciais do site e melhorar a sua experiência.', + }, + { + title: 'Estritamente necessários Sempre ativado', + description: + 'Necessários para que o site funcione corretamente. Não podem ser desativados.', + linkedCategory: 'necessary', + }, + { + title: 'Análise', + description: + 'Ajudam-nos a compreender como os visitantes interagem com o nosso site. Todos os dados são anonimizados.', + linkedCategory: 'analytics', + }, + { + title: 'Mais informações', + description: + 'Para questões sobre a nossa política de cookies, por favor contacte-nos.', + }, + ], + }, + }, + ko: { + consentModal: { + title: '이 사이트는 쿠키를 사용합니다', + description: + '브라우징 경험을 향상시키고 사이트 트래픽을 분석하며 서비스를 개선하기 위해 쿠키를 사용합니다. "모두 수락"을 클릭하면 쿠키 사용에 동의하는 것입니다.', + acceptAllBtn: '모두 수락', + acceptNecessaryBtn: '모두 거부', + showPreferencesBtn: '기본 설정 관리', + footer: '개인정보 및 쿠키', + }, + preferencesModal: { + title: '쿠키 기본 설정', + acceptAllBtn: '모두 수락', + acceptNecessaryBtn: '모두 거부', + savePreferencesBtn: '기본 설정 저장', + closeIconLabel: '닫기', + sections: [ + { + title: '쿠키 사용', + description: + '필수 웹사이트 기능을 제공하고 사용자 경험을 개선하기 위해 쿠키를 사용합니다.', + }, + { + title: '필수 항상 활성화됨', + description: '웹사이트가 제대로 작동하는 데 필요합니다. 비활성화할 수 없습니다.', + linkedCategory: 'necessary', + }, + { + title: '분석', + description: + '방문자가 웹사이트와 상호 작용하는 방식을 이해하는 데 도움이 됩니다. 모든 데이터는 익명화됩니다.', + linkedCategory: 'analytics', + }, + { + title: '추가 정보', + description: + '쿠키 정책에 대한 질문은 문의하십시오.', + }, + ], + }, + }, + tr: { + consentModal: { + title: 'Bu site çerez kullanıyor', + description: + 'Gezinme deneyiminizi geliştirmek, site trafiğini analiz etmek ve hizmetlerimizi iyileştirmek için çerezler kullanıyoruz. "Tümünü kabul et"i tıklayarak çerez kullanımımızı onaylamış olursunuz.', + acceptAllBtn: 'Tümünü kabul et', + acceptNecessaryBtn: 'Tümünü reddet', + showPreferencesBtn: 'Tercihleri yönet', + footer: + 'Gizlilik ve Tanımlama Bilgileri', + }, + preferencesModal: { + title: 'Çerez tercihleri', + acceptAllBtn: 'Tümünü kabul et', + acceptNecessaryBtn: 'Tümünü reddet', + savePreferencesBtn: 'Tercihleri kaydet', + closeIconLabel: 'Kapat', + sections: [ + { + title: 'Çerez kullanımı', + description: + 'Temel web sitesi işlevselliği sağlamak ve deneyiminizi geliştirmek için çerezler kullanıyoruz.', + }, + { + title: 'Kesinlikle gerekli Her Zaman Etkin', + description: + 'Web sitesinin düzgün çalışması için gereklidir. Bunlar devre dışı bırakılamaz.', + linkedCategory: 'necessary', + }, + { + title: 'Analitik', + description: + 'Ziyaretçilerin web sitemizle nasıl etkileşime girdiğini anlamamıza yardımcı olur. Tüm veriler anonimleştirilir.', + linkedCategory: 'analytics', + }, + { + title: 'Daha fazla bilgi', + description: + 'Çerez politikamız hakkında sorularınız için lütfen bizimle iletişime geçin.', + }, + ], + }, + }, + ru: { + consentModal: { + title: 'Этот сайт использует файлы cookie', + description: + 'Мы используем файлы cookie для улучшения вашего опыта просмотра, анализа трафика сайта и улучшения наших услуг. Нажимая "Принять все", вы соглашаетесь на использование нами файлов cookie.', + acceptAllBtn: 'Принять все', + acceptNecessaryBtn: 'Отклонить все', + showPreferencesBtn: 'Управление настройками', + footer: + 'Конфиденциальность и файлы cookie', + }, + preferencesModal: { + title: 'Настройки файлов cookie', + acceptAllBtn: 'Принять все', + acceptNecessaryBtn: 'Отклонить все', + savePreferencesBtn: 'Сохранить настройки', + closeIconLabel: 'Закрыть', + sections: [ + { + title: 'Использование файлов cookie', + description: + 'Мы используем файлы cookie для обеспечения основных функций веб-сайта и улучшения вашего опыта.', + }, + { + title: 'Строго необходимые Всегда включено', + description: 'Необходимы для правильной работы веб-сайта. Их нельзя отключить.', + linkedCategory: 'necessary', + }, + { + title: 'Аналитика', + description: + 'Помогают нам понять, как посетители взаимодействуют с нашим веб-сайтом. Все данные анонимизированы.', + linkedCategory: 'analytics', + }, + { + title: 'Дополнительная информация', + description: + 'По вопросам о нашей политике в отношении файлов cookie, пожалуйста, свяжитесь с нами.', + }, + ], + }, + }, + hi: { + consentModal: { + title: 'यह साइट कुकीज़ का उपयोग करती है', + description: + 'हम आपके ब्राउज़िंग अनुभव को बेहतर बनाने, साइट ट्रैफ़िक का विश्लेषण करने और अपनी सेवाओं को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं। "सभी स्वीकार करें" पर क्लिक करके, आप हमारे कुकीज़ के उपयोग के लिए सहमति देते हैं।', + acceptAllBtn: 'सभी स्वीकार करें', + acceptNecessaryBtn: 'सभी अस्वीकार करें', + showPreferencesBtn: 'प्राथमिकताएँ प्रबंधित करें', + footer: 'गोपनीयता और कुकीज़', + }, + preferencesModal: { + title: 'कुकी प्राथमिकताएँ', + acceptAllBtn: 'सभी स्वीकार करें', + acceptNecessaryBtn: 'सभी अस्वीकार करें', + savePreferencesBtn: 'प्राथमिकताएँ सहेजें', + closeIconLabel: 'बंद करें', + sections: [ + { + title: 'कुकी उपयोग', + description: + 'हम आवश्यक वेबसाइट कार्यक्षमता प्रदान करने और आपके अनुभव को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं।', + }, + { + title: 'सख्ती से आवश्यक हमेशा सक्षम', + description: + 'वेबसाइट के ठीक से काम करने के लिए आवश्यक। इन्हें अक्षम नहीं किया जा सकता।', + linkedCategory: 'necessary', + }, + { + title: 'विश्लेषण', + description: + 'आगंतुकों के हमारी वेबसाइट के साथ कैसे इंटरैक्ट करते हैं, यह समझने में हमारी मदद करें। सभी डेटा गुमनाम है।', + linkedCategory: 'analytics', + }, + { + title: 'अधिक जानकारी', + description: + 'हमारी कुकी नीति के बारे में प्रश्नों के लिए, कृपया हमसे संपर्क करें।', + }, + ], + }, + }, + da: { + consentModal: { + title: 'Dette site bruger cookies', + description: + 'Vi bruger cookies til at forbedre din browseroplevelse, analysere webstedstrafik og forbedre vores tjenester. Ved at klikke på "Acceptér alle" giver du samtykke til vores brug af cookies.', + acceptAllBtn: 'Acceptér alle', + acceptNecessaryBtn: 'Afvis alle', + showPreferencesBtn: 'Administrer præferencer', + footer: + 'Beskyttelse af personlige oplysninger og cookies', + }, + preferencesModal: { + title: 'Cookie-præferencer', + acceptAllBtn: 'Acceptér alle', + acceptNecessaryBtn: 'Afvis alle', + savePreferencesBtn: 'Gem præferencer', + closeIconLabel: 'Luk', + sections: [ + { + title: 'Cookie-brug', + description: + 'Vi bruger cookies til at levere essentiel webstedsfunktionalitet og forbedre din oplevelse.', + }, + { + title: 'Strengt nødvendige Altid aktiveret', + description: 'Krævet for at webstedet fungerer korrekt. Disse kan ikke deaktiveres.', + linkedCategory: 'necessary', + }, + { + title: 'Analyse', + description: + 'Hjælper os med at forstå, hvordan besøgende interagerer med vores websted. Alle data er anonymiserede.', + linkedCategory: 'analytics', + }, + { + title: 'Mere information', + description: + 'For spørgsmål om vores cookie-politik, bedes du kontakte os.', + }, + ], + }, + }, + uk: { + consentModal: { + title: 'Цей сайт використовує файли cookie', + description: + 'Ми використовуємо файли cookie для покращення вашого досвіду перегляду, аналізу трафіку сайту та покращення наших послуг. Натискаючи "Прийняти все", ви погоджуєтесь на використання нами файлів cookie.', + acceptAllBtn: 'Прийняти все', + acceptNecessaryBtn: 'Відхилити все', + showPreferencesBtn: 'Керувати налаштуваннями', + footer: + 'Конфіденційність і файли cookie', + }, + preferencesModal: { + title: 'Налаштування файлів cookie', + acceptAllBtn: 'Прийняти все', + acceptNecessaryBtn: 'Відхилити все', + savePreferencesBtn: 'Зберегти налаштування', + closeIconLabel: 'Закрити', + sections: [ + { + title: 'Використання файлів cookie', + description: + 'Ми використовуємо файли cookie для забезпечення основних функцій веб-сайту та покращення вашого досвіду.', + }, + { + title: 'Суворо необхідні Завжди ввімкнено', + description: 'Необхідні для правильної роботи веб-сайту. Їх не можна вимкнути.', + linkedCategory: 'necessary', + }, + { + title: 'Аналітика', + description: + 'Допомагають нам зрозуміти, як відвідувачі взаємодіють з нашим веб-сайтом. Усі дані анонімізовані.', + linkedCategory: 'analytics', + }, + { + title: 'Додаткова інформація', + description: + 'З питань про нашу політику щодо файлів cookie, будь ласка, зв\'яжіться з нами.', + }, + ], + }, + }, }, - categories: { - necessary: { - enabled: true, - readOnly: true - }, - analytics: { - enabled: true, - readOnly: false - }, - advertising: { - enabled: true, - readOnly: false - } - }, - language: { - default: 'en', - autoDetect: 'document', - translations: { - en: { - consentModal: { - title: 'This site uses cookies', - description: 'We use cookies to enhance your browsing experience, analyze site traffic, and improve our services. By clicking "Accept all," you consent to our use of cookies.', - acceptAllBtn: 'Accept all', - acceptNecessaryBtn: 'Reject all', - showPreferencesBtn: 'Manage preferences', - footer: 'Privacy & Cookies' - }, - preferencesModal: { - title: 'Cookie preferences', - acceptAllBtn: 'Accept all', - acceptNecessaryBtn: 'Reject all', - savePreferencesBtn: 'Save preferences', - closeIconLabel: 'Close', - sections: [ - { - title: 'Cookie usage', - description: 'We use cookies to provide essential website functionality and improve your experience.' - }, - { - title: 'Strictly necessary Always Enabled', - description: 'Required for the website to function properly. These cannot be disabled.', - //this field will generate a toggle linked to the 'necessary' category            - linkedCategory: 'necessary' - }, - { - title: 'Analytics', - description: 'Help us understand how visitors interact with our website. All data is anonymized.', - linkedCategory: 'analytics' - }, - { - title: 'More information', - description: 'For questions about our cookie policy, please contact us.' - } - ] - } - }, - de: { - consentModal: { - title: 'Diese Website verwendet Cookies', - description: 'Wir verwenden Cookies, um Ihr Browsing-Erlebnis zu verbessern, den Website-Traffic zu analysieren und unsere Dienste zu verbessern. Indem Sie auf "Alle akzeptieren" klicken, stimmen Sie unserer Verwendung von Cookies zu.', - acceptAllBtn: 'Alle akzeptieren', - acceptNecessaryBtn: 'Alle ablehnen', - showPreferencesBtn: 'Einstellungen verwalten', - footer: 'Datenschutz & Cookies' - }, - preferencesModal: { - title: 'Cookie-Einstellungen', - acceptAllBtn: 'Alle akzeptieren', - acceptNecessaryBtn: 'Alle ablehnen', - savePreferencesBtn: 'Einstellungen speichern', - closeIconLabel: 'Schließen', - sections: [ - { - title: 'Cookie-Verwendung', - description: 'Wir verwenden Cookies, um wesentliche Website-Funktionen bereitzustellen und Ihre Erfahrung zu verbessern.' - }, - { - title: 'Unbedingt erforderlich Immer aktiviert', - description: 'Erforderlich, damit die Website ordnungsgemäß funktioniert. Diese können nicht deaktiviert werden.', - linkedCategory: 'necessary' - }, - { - title: 'Analyse', - description: 'Helfen Sie uns zu verstehen, wie Besucher mit unserer Website interagieren. Alle Daten werden anonymisiert.', - linkedCategory: 'analytics' - }, - { - title: 'Weitere Informationen', - description: 'Bei Fragen zu unserer Cookie-Richtlinie kontaktieren Sie uns bitte.' - } - ] - } - }, - es: { - consentModal: { - title: 'Este sitio utiliza cookies', - description: 'Utilizamos cookies para mejorar su experiencia de navegación, analizar el tráfico del sitio y mejorar nuestros servicios. Al hacer clic en "Aceptar todo", acepta nuestro uso de cookies.', - acceptAllBtn: 'Aceptar todo', - acceptNecessaryBtn: 'Rechazar todo', - showPreferencesBtn: 'Administrar preferencias', - footer: 'Privacidad y cookies' - }, - preferencesModal: { - title: 'Preferencias de cookies', - acceptAllBtn: 'Aceptar todo', - acceptNecessaryBtn: 'Rechazar todo', - savePreferencesBtn: 'Guardar preferencias', - closeIconLabel: 'Cerrar', - sections: [ - { - title: 'Uso de cookies', - description: 'Utilizamos cookies para proporcionar funcionalidad esencial del sitio web y mejorar su experiencia.' - }, - { - title: 'Estrictamente necesarias Siempre habilitado', - description: 'Necesarias para que el sitio web funcione correctamente. No se pueden desactivar.', - linkedCategory: 'necessary' - }, - { - title: 'Analíticas', - description: 'Nos ayudan a entender cómo los visitantes interactúan con nuestro sitio web. Todos los datos son anónimos.', - linkedCategory: 'analytics' - }, - { - title: 'Más información', - description: 'Para preguntas sobre nuestra política de cookies, por favor contáctenos.' - } - ] - } - }, - ja: { - consentModal: { - title: 'このサイトはクッキーを使用しています', - description: 'ブラウジング体験を向上させ、サイトのトラフィックを分析し、サービスを改善するためにクッキーを使用しています。「すべて受け入れる」をクリックすると、クッキーの使用に同意したことになります。', - acceptAllBtn: 'すべて受け入れる', - acceptNecessaryBtn: 'すべて拒否', - showPreferencesBtn: '設定を管理', - footer: 'プライバシーとクッキー' - }, - preferencesModal: { - title: 'クッキーの設定', - acceptAllBtn: 'すべて受け入れる', - acceptNecessaryBtn: 'すべて拒否', - savePreferencesBtn: '設定を保存', - closeIconLabel: '閉じる', - sections: [ - { - title: 'クッキーの使用', - description: 'ウェブサイトの基本的な機能を提供し、ユーザー体験を向上させるためにクッキーを使用しています。' - }, - { - title: '必須 常に有効', - description: 'ウェブサイトが正常に機能するために必要です。無効にすることはできません。', - linkedCategory: 'necessary' - }, - { - title: '分析', - description: '訪問者がウェブサイトとどのようにやり取りしているかを理解するのに役立ちます。すべてのデータは匿名化されています。', - linkedCategory: 'analytics' - }, - { - title: '詳細情報', - description: 'クッキーポリシーに関するご質問は、お問い合わせください。' - } - ] - } - }, - fr: { - consentModal: { - title: 'Ce site utilise des cookies', - description: 'Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et améliorer nos services. En cliquant sur "Tout accepter", vous consentez à notre utilisation de cookies.', - acceptAllBtn: 'Tout accepter', - acceptNecessaryBtn: 'Tout rejeter', - showPreferencesBtn: 'Gérer les préférences', - footer: 'Confidentialité et cookies' - }, - preferencesModal: { - title: 'Préférences des cookies', - acceptAllBtn: 'Tout accepter', - acceptNecessaryBtn: 'Tout rejeter', - savePreferencesBtn: 'Enregistrer les préférences', - closeIconLabel: 'Fermer', - sections: [ - { - title: 'Utilisation des cookies', - description: 'Nous utilisons des cookies pour fournir des fonctionnalités essentielles du site web et améliorer votre expérience.' - }, - { - title: 'Strictement nécessaires Toujours activé', - description: 'Nécessaires au bon fonctionnement du site web. Ils ne peuvent pas être désactivés.', - linkedCategory: 'necessary' - }, - { - title: 'Analytiques', - description: 'Nous aident à comprendre comment les visiteurs interagissent avec notre site web. Toutes les données sont anonymisées.', - linkedCategory: 'analytics' - }, - { - title: 'Plus d\'informations', - description: 'Pour toute question concernant notre politique en matière de cookies, veuillez nous contacter.' - } - ] - } - }, - it: { - consentModal: { - title: 'Questo sito utilizza i cookie', - description: 'Utilizziamo i cookie per migliorare la tua esperienza di navigazione, analizzare il traffico del sito e migliorare i nostri servizi. Cliccando su "Accetta tutto", acconsenti al nostro utilizzo dei cookie.', - acceptAllBtn: 'Accetta tutto', - acceptNecessaryBtn: 'Rifiuta tutto', - showPreferencesBtn: 'Gestisci preferenze', - footer: 'Privacy e cookie' - }, - preferencesModal: { - title: 'Preferenze dei cookie', - acceptAllBtn: 'Accetta tutto', - acceptNecessaryBtn: 'Rifiuta tutto', - savePreferencesBtn: 'Salva preferenze', - closeIconLabel: 'Chiudi', - sections: [ - { - title: 'Utilizzo dei cookie', - description: 'Utilizziamo i cookie per fornire funzionalità essenziali del sito web e migliorare la tua esperienza.' - }, - { - title: 'Strettamente necessari Sempre abilitato', - description: 'Necessari per il corretto funzionamento del sito web. Non possono essere disabilitati.', - linkedCategory: 'necessary' - }, - { - title: 'Analitici', - description: 'Ci aiutano a capire come i visitatori interagiscono con il nostro sito web. Tutti i dati sono anonimizzati.', - linkedCategory: 'analytics' - }, - { - title: 'Ulteriori informazioni', - description: 'Per domande sulla nostra politica sui cookie, contattaci.' - } - ] - } - }, - id: { - consentModal: { - title: 'Situs ini menggunakan cookie', - description: 'Kami menggunakan cookie untuk meningkatkan pengalaman browsing Anda, menganalisis lalu lintas situs, dan meningkatkan layanan kami. Dengan mengklik "Terima semua", Anda menyetujui penggunaan cookie kami.', - acceptAllBtn: 'Terima semua', - acceptNecessaryBtn: 'Tolak semua', - showPreferencesBtn: 'Kelola preferensi', - footer: 'Privasi & Cookie' - }, - preferencesModal: { - title: 'Preferensi cookie', - acceptAllBtn: 'Terima semua', - acceptNecessaryBtn: 'Tolak semua', - savePreferencesBtn: 'Simpan preferensi', - closeIconLabel: 'Tutup', - sections: [ - { - title: 'Penggunaan cookie', - description: 'Kami menggunakan cookie untuk menyediakan fungsi penting situs web dan meningkatkan pengalaman Anda.' - }, - { - title: 'Sangat diperlukan Selalu Diaktifkan', - description: 'Diperlukan agar situs web berfungsi dengan baik. Ini tidak dapat dinonaktifkan.', - linkedCategory: 'necessary' - }, - { - title: 'Analitik', - description: 'Membantu kami memahami bagaimana pengunjung berinteraksi dengan situs web kami. Semua data dianonimkan.', - linkedCategory: 'analytics' - }, - { - title: 'Informasi lebih lanjut', - description: 'Untuk pertanyaan tentang kebijakan cookie kami, silakan hubungi kami.' - } - ] - } - }, - 'zh-cn': { - consentModal: { - title: '本网站使用Cookie', - description: '我们使用Cookie来改善您的浏览体验,分析网站流量并改进我们的服务。点击"全部接受"即表示您同意我们使用Cookie。', - acceptAllBtn: '全部接受', - acceptNecessaryBtn: '全部拒绝', - showPreferencesBtn: '管理偏好设置', - footer: '隐私和Cookie' - }, - preferencesModal: { - title: 'Cookie偏好设置', - acceptAllBtn: '全部接受', - acceptNecessaryBtn: '全部拒绝', - savePreferencesBtn: '保存偏好设置', - closeIconLabel: '关闭', - sections: [ - { - title: 'Cookie使用', - description: '我们使用Cookie来提供基本的网站功能并改善您的体验。' - }, - { - title: '严格必要 始终启用', - description: '网站正常运行所必需的。这些无法禁用。', - linkedCategory: 'necessary' - }, - { - title: '分析', - description: '帮助我们了解访问者如何与我们的网站互动。所有数据都已匿名化。', - linkedCategory: 'analytics' - }, - { - title: '更多信息', - description: '有关我们Cookie政策的问题,请联系我们。' - } - ] - } - }, - 'pt-br': { - consentModal: { - title: 'Este site usa cookies', - description: 'Usamos cookies para melhorar sua experiência de navegação, analisar o tráfego do site e melhorar nossos serviços. Ao clicar em "Aceitar tudo", você consente com nosso uso de cookies.', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - showPreferencesBtn: 'Gerenciar preferências', - footer: 'Privacidade e Cookies' - }, - preferencesModal: { - title: 'Preferências de cookies', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - savePreferencesBtn: 'Salvar preferências', - closeIconLabel: 'Fechar', - sections: [ - { - title: 'Uso de cookies', - description: 'Usamos cookies para fornecer funcionalidade essencial do site e melhorar sua experiência.' - }, - { - title: 'Estritamente necessários Sempre ativado', - description: 'Necessários para que o site funcione corretamente. Estes não podem ser desativados.', - linkedCategory: 'necessary' - }, - { - title: 'Análise', - description: 'Nos ajudam a entender como os visitantes interagem com nosso site. Todos os dados são anonimizados.', - linkedCategory: 'analytics' - }, - { - title: 'Mais informações', - description: 'Para dúvidas sobre nossa política de cookies, por favor entre em contato.' - } - ] - } - }, - 'pt-pt': { - consentModal: { - title: 'Este site utiliza cookies', - description: 'Utilizamos cookies para melhorar a sua experiência de navegação, analisar o tráfego do site e melhorar os nossos serviços. Ao clicar em "Aceitar tudo", consente a nossa utilização de cookies.', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - showPreferencesBtn: 'Gerir preferências', - footer: 'Privacidade e Cookies' - }, - preferencesModal: { - title: 'Preferências de cookies', - acceptAllBtn: 'Aceitar tudo', - acceptNecessaryBtn: 'Rejeitar tudo', - savePreferencesBtn: 'Guardar preferências', - closeIconLabel: 'Fechar', - sections: [ - { - title: 'Utilização de cookies', - description: 'Utilizamos cookies para fornecer funcionalidades essenciais do site e melhorar a sua experiência.' - }, - { - title: 'Estritamente necessários Sempre ativado', - description: 'Necessários para que o site funcione corretamente. Não podem ser desativados.', - linkedCategory: 'necessary' - }, - { - title: 'Análise', - description: 'Ajudam-nos a compreender como os visitantes interagem com o nosso site. Todos os dados são anonimizados.', - linkedCategory: 'analytics' - }, - { - title: 'Mais informações', - description: 'Para questões sobre a nossa política de cookies, por favor contacte-nos.' - } - ] - } - }, - ko: { - consentModal: { - title: '이 사이트는 쿠키를 사용합니다', - description: '브라우징 경험을 향상시키고 사이트 트래픽을 분석하며 서비스를 개선하기 위해 쿠키를 사용합니다. "모두 수락"을 클릭하면 쿠키 사용에 동의하는 것입니다.', - acceptAllBtn: '모두 수락', - acceptNecessaryBtn: '모두 거부', - showPreferencesBtn: '기본 설정 관리', - footer: '개인정보 및 쿠키' - }, - preferencesModal: { - title: '쿠키 기본 설정', - acceptAllBtn: '모두 수락', - acceptNecessaryBtn: '모두 거부', - savePreferencesBtn: '기본 설정 저장', - closeIconLabel: '닫기', - sections: [ - { - title: '쿠키 사용', - description: '필수 웹사이트 기능을 제공하고 사용자 경험을 개선하기 위해 쿠키를 사용합니다.' - }, - { - title: '필수 항상 활성화됨', - description: '웹사이트가 제대로 작동하는 데 필요합니다. 비활성화할 수 없습니다.', - linkedCategory: 'necessary' - }, - { - title: '분석', - description: '방문자가 웹사이트와 상호 작용하는 방식을 이해하는 데 도움이 됩니다. 모든 데이터는 익명화됩니다.', - linkedCategory: 'analytics' - }, - { - title: '추가 정보', - description: '쿠키 정책에 대한 질문은 문의하십시오.' - } - ] - } - }, - tr: { - consentModal: { - title: 'Bu site çerez kullanıyor', - description: 'Gezinme deneyiminizi geliştirmek, site trafiğini analiz etmek ve hizmetlerimizi iyileştirmek için çerezler kullanıyoruz. "Tümünü kabul et"i tıklayarak çerez kullanımımızı onaylamış olursunuz.', - acceptAllBtn: 'Tümünü kabul et', - acceptNecessaryBtn: 'Tümünü reddet', - showPreferencesBtn: 'Tercihleri yönet', - footer: 'Gizlilik ve Tanımlama Bilgileri' - }, - preferencesModal: { - title: 'Çerez tercihleri', - acceptAllBtn: 'Tümünü kabul et', - acceptNecessaryBtn: 'Tümünü reddet', - savePreferencesBtn: 'Tercihleri kaydet', - closeIconLabel: 'Kapat', - sections: [ - { - title: 'Çerez kullanımı', - description: 'Temel web sitesi işlevselliği sağlamak ve deneyiminizi geliştirmek için çerezler kullanıyoruz.' - }, - { - title: 'Kesinlikle gerekli Her Zaman Etkin', - description: 'Web sitesinin düzgün çalışması için gereklidir. Bunlar devre dışı bırakılamaz.', - linkedCategory: 'necessary' - }, - { - title: 'Analitik', - description: 'Ziyaretçilerin web sitemizle nasıl etkileşime girdiğini anlamamıza yardımcı olur. Tüm veriler anonimleştirilir.', - linkedCategory: 'analytics' - }, - { - title: 'Daha fazla bilgi', - description: 'Çerez politikamız hakkında sorularınız için lütfen bizimle iletişime geçin.' - } - ] - } - }, - ru: { - consentModal: { - title: 'Этот сайт использует файлы cookie', - description: 'Мы используем файлы cookie для улучшения вашего опыта просмотра, анализа трафика сайта и улучшения наших услуг. Нажимая "Принять все", вы соглашаетесь на использование нами файлов cookie.', - acceptAllBtn: 'Принять все', - acceptNecessaryBtn: 'Отклонить все', - showPreferencesBtn: 'Управление настройками', - footer: 'Конфиденциальность и файлы cookie' - }, - preferencesModal: { - title: 'Настройки файлов cookie', - acceptAllBtn: 'Принять все', - acceptNecessaryBtn: 'Отклонить все', - savePreferencesBtn: 'Сохранить настройки', - closeIconLabel: 'Закрыть', - sections: [ - { - title: 'Использование файлов cookie', - description: 'Мы используем файлы cookie для обеспечения основных функций веб-сайта и улучшения вашего опыта.' - }, - { - title: 'Строго необходимые Всегда включено', - description: 'Необходимы для правильной работы веб-сайта. Их нельзя отключить.', - linkedCategory: 'necessary' - }, - { - title: 'Аналитика', - description: 'Помогают нам понять, как посетители взаимодействуют с нашим веб-сайтом. Все данные анонимизированы.', - linkedCategory: 'analytics' - }, - { - title: 'Дополнительная информация', - description: 'По вопросам о нашей политике в отношении файлов cookie, пожалуйста, свяжитесь с нами.' - } - ] - } - }, - hi: { - consentModal: { - title: 'यह साइट कुकीज़ का उपयोग करती है', - description: 'हम आपके ब्राउज़िंग अनुभव को बेहतर बनाने, साइट ट्रैफ़िक का विश्लेषण करने और अपनी सेवाओं को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं। "सभी स्वीकार करें" पर क्लिक करके, आप हमारे कुकीज़ के उपयोग के लिए सहमति देते हैं।', - acceptAllBtn: 'सभी स्वीकार करें', - acceptNecessaryBtn: 'सभी अस्वीकार करें', - showPreferencesBtn: 'प्राथमिकताएँ प्रबंधित करें', - footer: 'गोपनीयता और कुकीज़' - }, - preferencesModal: { - title: 'कुकी प्राथमिकताएँ', - acceptAllBtn: 'सभी स्वीकार करें', - acceptNecessaryBtn: 'सभी अस्वीकार करें', - savePreferencesBtn: 'प्राथमिकताएँ सहेजें', - closeIconLabel: 'बंद करें', - sections: [ - { - title: 'कुकी उपयोग', - description: 'हम आवश्यक वेबसाइट कार्यक्षमता प्रदान करने और आपके अनुभव को बेहतर बनाने के लिए कुकीज़ का उपयोग करते हैं।' - }, - { - title: 'सख्ती से आवश्यक हमेशा सक्षम', - description: 'वेबसाइट के ठीक से काम करने के लिए आवश्यक। इन्हें अक्षम नहीं किया जा सकता।', - linkedCategory: 'necessary' - }, - { - title: 'विश्लेषण', - description: 'आगंतुकों के हमारी वेबसाइट के साथ कैसे इंटरैक्ट करते हैं, यह समझने में हमारी मदद करें। सभी डेटा गुमनाम है।', - linkedCategory: 'analytics' - }, - { - title: 'अधिक जानकारी', - description: 'हमारी कुकी नीति के बारे में प्रश्नों के लिए, कृपया हमसे संपर्क करें।' - } - ] - } - }, - da: { - consentModal: { - title: 'Dette site bruger cookies', - description: 'Vi bruger cookies til at forbedre din browseroplevelse, analysere webstedstrafik og forbedre vores tjenester. Ved at klikke på "Acceptér alle" giver du samtykke til vores brug af cookies.', - acceptAllBtn: 'Acceptér alle', - acceptNecessaryBtn: 'Afvis alle', - showPreferencesBtn: 'Administrer præferencer', - footer: 'Beskyttelse af personlige oplysninger og cookies' - }, - preferencesModal: { - title: 'Cookie-præferencer', - acceptAllBtn: 'Acceptér alle', - acceptNecessaryBtn: 'Afvis alle', - savePreferencesBtn: 'Gem præferencer', - closeIconLabel: 'Luk', - sections: [ - { - title: 'Cookie-brug', - description: 'Vi bruger cookies til at levere essentiel webstedsfunktionalitet og forbedre din oplevelse.' - }, - { - title: 'Strengt nødvendige Altid aktiveret', - description: 'Krævet for at webstedet fungerer korrekt. Disse kan ikke deaktiveres.', - linkedCategory: 'necessary' - }, - { - title: 'Analyse', - description: 'Hjælper os med at forstå, hvordan besøgende interagerer med vores websted. Alle data er anonymiserede.', - linkedCategory: 'analytics' - }, - { - title: 'Mere information', - description: 'For spørgsmål om vores cookie-politik, bedes du kontakte os.' - } - ] - } - }, - uk: { - consentModal: { - title: 'Цей сайт використовує файли cookie', - description: 'Ми використовуємо файли cookie для покращення вашого досвіду перегляду, аналізу трафіку сайту та покращення наших послуг. Натискаючи "Прийняти все", ви погоджуєтесь на використання нами файлів cookie.', - acceptAllBtn: 'Прийняти все', - acceptNecessaryBtn: 'Відхилити все', - showPreferencesBtn: 'Керувати налаштуваннями', - footer: 'Конфіденційність і файли cookie' - }, - preferencesModal: { - title: 'Налаштування файлів cookie', - acceptAllBtn: 'Прийняти все', - acceptNecessaryBtn: 'Відхилити все', - savePreferencesBtn: 'Зберегти налаштування', - closeIconLabel: 'Закрити', - sections: [ - { - title: 'Використання файлів cookie', - description: 'Ми використовуємо файли cookie для забезпечення основних функцій веб-сайту та покращення вашого досвіду.' - }, - { - title: 'Суворо необхідні Завжди ввімкнено', - description: 'Необхідні для правильної роботи веб-сайту. Їх не можна вимкнути.', - linkedCategory: 'necessary' - }, - { - title: 'Аналітика', - description: 'Допомагають нам зрозуміти, як відвідувачі взаємодіють з нашим веб-сайтом. Усі дані анонімізовані.', - linkedCategory: 'analytics' - }, - { - title: 'Додаткова інформація', - description: 'З питань про нашу політику щодо файлів cookie, будь ласка, зв\'яжіться з нами.' - } - ] - } - } - } - } -}; \ No newline at end of file + }, +}; diff --git a/src/frontend/config/head.attrs.ts b/src/frontend/config/head.attrs.ts index 294572d5..302b6363 100644 --- a/src/frontend/config/head.attrs.ts +++ b/src/frontend/config/head.attrs.ts @@ -1,64 +1,105 @@ export type HeadAttr = { - tag: 'title' | 'base' | 'link' | 'style' | 'meta' | 'script' | 'noscript' | 'template'; - attrs?: Record; - content?: string; + tag: 'title' | 'base' | 'link' | 'style' | 'meta' | 'script' | 'noscript' | 'template'; + attrs?: Record; + content?: string; }; export const headAttrs: HeadAttr[] = [ - // SEO meta tags for discoverability (including legacy ".NET Aspire" branding) - { tag: 'meta', attrs: { name: 'description', content: 'Aspire is a polyglot local dev-time orchestration tool chain for building, running, debugging, and deploying distributed applications.' } }, - { - tag: 'meta', attrs: { - name: 'keywords', content: ` + // SEO meta tags for discoverability (including legacy ".NET Aspire" branding) + { + tag: 'meta', + attrs: { + name: 'description', + content: + 'Aspire is a polyglot local dev-time orchestration tool chain for building, running, debugging, and deploying distributed applications.', + }, + }, + { + tag: 'meta', + attrs: { + name: 'keywords', + content: ` Aspire, .NET Aspire, dotnet aspire, distributed applications, cloud-native, microservices, orchestration, .NET, observability, otel, opentelemetry, dashboard, service discovery, integrations, C#, csharp, polyglot, python, go, node.js, javascript, typescript, vite, react, blazor, wasm, webassembly, aspnetcore, minimal apis, docker, containers, kubernetes, compose - `.replace(/\s*\n\s*/g, ' ').trim() - } + ` + .replace(/\s*\n\s*/g, ' ') + .trim(), }, - { tag: 'meta', attrs: { name: 'alternate-name', content: '.NET Aspire' } }, + }, + { tag: 'meta', attrs: { name: 'alternate-name', content: '.NET Aspire' } }, - // Open Graph meta tags - { tag: 'meta', attrs: { property: 'og:title', content: 'Aspire—Your Stack, Streamlined' } }, - { tag: 'meta', attrs: { property: 'og:description', content: 'Aspire streamlines your development workflow with code-first control, modularity, and observability for distributed applications.' } }, - { tag: 'meta', attrs: { property: 'og:image', content: 'https://aspire.dev/og-image.png' } }, - { tag: 'meta', attrs: { property: 'og:type', content: 'website' } }, - { tag: 'meta', attrs: { property: 'og:site_name', content: 'Aspire' } }, + // Open Graph meta tags + { tag: 'meta', attrs: { property: 'og:title', content: 'Aspire—Your Stack, Streamlined' } }, + { + tag: 'meta', + attrs: { + property: 'og:description', + content: + 'Aspire streamlines your development workflow with code-first control, modularity, and observability for distributed applications.', + }, + }, + { tag: 'meta', attrs: { property: 'og:image', content: 'https://aspire.dev/og-image.png' } }, + { tag: 'meta', attrs: { property: 'og:type', content: 'website' } }, + { tag: 'meta', attrs: { property: 'og:site_name', content: 'Aspire' } }, - // Twitter Card meta tags - { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, - { tag: 'meta', attrs: { property: 'twitter:domain', content: 'aspire.dev' } }, - { tag: 'meta', attrs: { property: 'twitter:url', content: 'https://aspire.dev' } }, - { tag: 'meta', attrs: { name: 'twitter:title', content: 'Aspire—Your Stack, Streamlined' } }, - { tag: 'meta', attrs: { name: 'twitter:description', content: 'Aspire (formerly .NET Aspire) streamlines your development workflow with code-first control, modularity, and observability.' } }, - { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://aspire.dev/og-image.png' } }, + // Twitter Card meta tags + { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, + { tag: 'meta', attrs: { property: 'twitter:domain', content: 'aspire.dev' } }, + { tag: 'meta', attrs: { property: 'twitter:url', content: 'https://aspire.dev' } }, + { tag: 'meta', attrs: { name: 'twitter:title', content: 'Aspire—Your Stack, Streamlined' } }, + { + tag: 'meta', + attrs: { + name: 'twitter:description', + content: + 'Aspire (formerly .NET Aspire) streamlines your development workflow with code-first control, modularity, and observability.', + }, + }, + { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://aspire.dev/og-image.png' } }, - // Favicons and icons (ordered: SVG → PNG → ICO → Apple Touch Icon) - { tag: 'link', attrs: { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' } }, - { tag: 'link', attrs: { rel: 'icon', type: 'image/png', href: '/favicon-96x96.png', sizes: '96x96' } }, - { tag: 'link', attrs: { rel: 'shortcut icon', href: '/favicon.ico' } }, - { tag: 'link', attrs: { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' } }, - { tag: 'meta', attrs: { name: 'apple-mobile-web-app-title', content: 'Aspire' } }, - { tag: 'link', attrs: { rel: 'alternate', type: 'application/rss+xml', title: 'Aspire Docs RSS', href: '/rss.xml' } }, + // Favicons and icons (ordered: SVG → PNG → ICO → Apple Touch Icon) + { tag: 'link', attrs: { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' } }, + { + tag: 'link', + attrs: { rel: 'icon', type: 'image/png', href: '/favicon-96x96.png', sizes: '96x96' }, + }, + { tag: 'link', attrs: { rel: 'shortcut icon', href: '/favicon.ico' } }, + { + tag: 'link', + attrs: { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' }, + }, + { tag: 'meta', attrs: { name: 'apple-mobile-web-app-title', content: 'Aspire' } }, + { + tag: 'link', + attrs: { + rel: 'alternate', + type: 'application/rss+xml', + title: 'Aspire Docs RSS', + href: '/rss.xml', + }, + }, - // Analytics scripts - { - tag: 'script', attrs: { - type: 'text/plain', - src: 'https://js.monitor.azure.com/scripts/c/ms.analytics-web-3.min.js', - defer: true, - 'data-category': 'analytics' - } + // Analytics scripts + { + tag: 'script', + attrs: { + type: 'text/plain', + src: 'https://js.monitor.azure.com/scripts/c/ms.analytics-web-3.min.js', + defer: true, + 'data-category': 'analytics', + }, + }, + { + tag: 'script', + attrs: { + type: 'text/plain', + src: '/1ds/', + defer: true, + 'data-category': 'analytics', }, - { - tag: 'script', attrs: { - type: 'text/plain', - src: '/1ds/', - defer: true, - 'data-category': 'analytics' - } - } -]; \ No newline at end of file + }, +]; diff --git a/src/frontend/config/icon-packs.mjs b/src/frontend/config/icon-packs.mjs index 0e976186..515a373b 100644 --- a/src/frontend/config/icon-packs.mjs +++ b/src/frontend/config/icon-packs.mjs @@ -3,28 +3,31 @@ // See: https://github.com/joesaby/astro-mermaid/blob/main/astro-mermaid-integration.js#L135-L158 export const iconPacks = [ - { - // Search: https://icon-sets.iconify.design/logos/?keyword=svg+logos - name: 'logos', - loader: () => fetch('https://unpkg.com/@iconify-json/logos@1/icons.json').then(res => res.json()) - }, - { - // Search: https://icon-sets.iconify.design/iconoir/?keyword=iconoir - name: 'iconoir', - loader: () => fetch('https://unpkg.com/@iconify-json/iconoir@1/icons.json').then(res => res.json()) - }, - { - // Custom Aspire icons - inlined to work around astro-mermaid serialization bug - name: 'aspire', - loader: () => Promise.resolve({ - prefix: 'aspire', - icons: { - blazor: { - body: '', - height: '1808', - width: '2000' - } - } - }) - } + { + // Search: https://icon-sets.iconify.design/logos/?keyword=svg+logos + name: 'logos', + loader: () => + fetch('https://unpkg.com/@iconify-json/logos@1/icons.json').then((res) => res.json()), + }, + { + // Search: https://icon-sets.iconify.design/iconoir/?keyword=iconoir + name: 'iconoir', + loader: () => + fetch('https://unpkg.com/@iconify-json/iconoir@1/icons.json').then((res) => res.json()), + }, + { + // Custom Aspire icons - inlined to work around astro-mermaid serialization bug + name: 'aspire', + loader: () => + Promise.resolve({ + prefix: 'aspire', + icons: { + blazor: { + body: '', + height: '1808', + width: '2000', + }, + }, + }), + }, ]; diff --git a/src/frontend/config/locales.ts b/src/frontend/config/locales.ts index bc7a56f1..7cc053e1 100644 --- a/src/frontend/config/locales.ts +++ b/src/frontend/config/locales.ts @@ -1,19 +1,19 @@ // Localization: https://lunaria.dev/ export const locales = { - root: { label: 'English', lang: 'en' }, - de: { label: 'Deutsch', lang: 'de' }, - es: { label: 'Español', lang: 'es' }, - ja: { label: '日本語', lang: 'ja' }, - fr: { label: 'Français', lang: 'fr' }, - it: { label: 'Italiano', lang: 'it' }, - id: { label: 'Bahasa Indonesia', lang: 'id' }, - 'zh-cn': { label: '简体中文', lang: 'zh-CN' }, - 'pt-br': { label: 'Português do Brasil', lang: 'pt-BR' }, - 'pt-pt': { label: 'Português', lang: 'pt-PT' }, - ko: { label: '한국어', lang: 'ko' }, - tr: { label: 'Türkçe', lang: 'tr' }, - ru: { label: 'Русский', lang: 'ru' }, - hi: { label: 'हिंदी', lang: 'hi' }, - da: { label: 'Dansk', lang: 'da' }, - uk: { label: 'Українська', lang: 'uk' }, -}; \ No newline at end of file + root: { label: 'English', lang: 'en' }, + de: { label: 'Deutsch', lang: 'de' }, + es: { label: 'Español', lang: 'es' }, + ja: { label: '日本語', lang: 'ja' }, + fr: { label: 'Français', lang: 'fr' }, + it: { label: 'Italiano', lang: 'it' }, + id: { label: 'Bahasa Indonesia', lang: 'id' }, + 'zh-cn': { label: '简体中文', lang: 'zh-CN' }, + 'pt-br': { label: 'Português do Brasil', lang: 'pt-BR' }, + 'pt-pt': { label: 'Português', lang: 'pt-PT' }, + ko: { label: '한국어', lang: 'ko' }, + tr: { label: 'Türkçe', lang: 'tr' }, + ru: { label: 'Русский', lang: 'ru' }, + hi: { label: 'हिंदी', lang: 'hi' }, + da: { label: 'Dansk', lang: 'da' }, + uk: { label: 'Українська', lang: 'uk' }, +}; diff --git a/src/frontend/config/redirects.mjs b/src/frontend/config/redirects.mjs index 8eaacb7a..4d3c7d6d 100644 --- a/src/frontend/config/redirects.mjs +++ b/src/frontend/config/redirects.mjs @@ -1,9 +1,9 @@ export const redirects = { - // https://docs.astro.build/en/guides/routing/#configured-redirects - // For example: - // '/original/path/': '/new/path' - '/get-started/welcome/': '/docs/', - '/integrations/postgres/': '/integrations/databases/postgres/', - '/integrations/rabbitmq/': '/integrations/messaging/rabbitmq/', - '/integrations/eventstore/': '/integrations/databases/kurrentdb/', -}; \ No newline at end of file + // https://docs.astro.build/en/guides/routing/#configured-redirects + // For example: + // '/original/path/': '/new/path' + '/get-started/welcome/': '/docs/', + '/integrations/postgres/': '/integrations/databases/postgres/', + '/integrations/rabbitmq/': '/integrations/messaging/rabbitmq/', + '/integrations/eventstore/': '/integrations/databases/kurrentdb/', +}; diff --git a/src/frontend/config/sidebar/sidebar.topics.ts b/src/frontend/config/sidebar/sidebar.topics.ts index 8df80295..e12f30a5 100644 --- a/src/frontend/config/sidebar/sidebar.topics.ts +++ b/src/frontend/config/sidebar/sidebar.topics.ts @@ -1,699 +1,699 @@ -import type { StarlightSidebarTopicsUserConfig } from "starlight-sidebar-topics"; +import type { StarlightSidebarTopicsUserConfig } from 'starlight-sidebar-topics'; export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ { label: { - da: "Dokumenter", - de: "Dokumente", - en: "Docs", - es: "Documentos", - fr: "Documents", - hi: "दस्तावेज़", - id: "Dokumen", - it: "Documenti", - ja: "ドキュメント", - ko: "문서", - "pt-BR": "Documentos", - "pt-PT": "Documentos", - ru: "Документы", - tr: "Belgeler", - uk: "Документи", - "zh-CN": "文档", + da: 'Dokumenter', + de: 'Dokumente', + en: 'Docs', + es: 'Documentos', + fr: 'Documents', + hi: 'दस्तावेज़', + id: 'Dokumen', + it: 'Documenti', + ja: 'ドキュメント', + ko: '문서', + 'pt-BR': 'Documentos', + 'pt-PT': 'Documentos', + ru: 'Документы', + tr: 'Belgeler', + uk: 'Документи', + 'zh-CN': '文档', }, - link: "docs", - icon: "open-book", + link: 'docs', + icon: 'open-book', items: [ { - label: "Welcome to Aspire", + label: 'Welcome to Aspire', translations: { - da: "Velkommen til Aspire", - de: "Willkommen bei Aspire", - en: "Welcome to Aspire", - es: "Bienvenido a Aspire", - fr: "Bienvenue à Aspire", - hi: "Aspire में आपका स्वागत है", - id: "Selamat datang di Aspire", - it: "Benvenuto in Aspire", - ja: "Aspire へようこそ", - ko: "Aspire에 오신 것을 환영합니다", - "pt-BR": "Bem-vindo ao Aspire", - "pt-PT": "Bem-vindo ao Aspire", - ru: "Добро пожаловать в Aspire", + da: 'Velkommen til Aspire', + de: 'Willkommen bei Aspire', + en: 'Welcome to Aspire', + es: 'Bienvenido a Aspire', + fr: 'Bienvenue à Aspire', + hi: 'Aspire में आपका स्वागत है', + id: 'Selamat datang di Aspire', + it: 'Benvenuto in Aspire', + ja: 'Aspire へようこそ', + ko: 'Aspire에 오신 것을 환영합니다', + 'pt-BR': 'Bem-vindo ao Aspire', + 'pt-PT': 'Bem-vindo ao Aspire', + ru: 'Добро пожаловать в Aspire', tr: "Aspire'a Hoş Geldiniz", - uk: "Ласкаво просимо до Aspire", - "zh-CN": "欢迎使用 Aspire", + uk: 'Ласкаво просимо до Aspire', + 'zh-CN': '欢迎使用 Aspire', }, - slug: "docs", + slug: 'docs', }, { label: "What's new", collapsed: true, - autogenerate: { directory: "whats-new" }, + autogenerate: { directory: 'whats-new' }, translations: { - da: "Hvad er nyt", - de: "Was gibt es Neues", + da: 'Hvad er nyt', + de: 'Was gibt es Neues', en: "What's new", - es: "Novedades", - fr: "Quoi de neuf", - hi: "क्या नया है", - id: "Apa yang baru", - it: "Novità", - ja: "新着情報", - ko: "새로운 소식", - "pt-BR": "Novidades", - "pt-PT": "Novidades", - ru: "Что нового", - tr: "Yeni neler var", - uk: "Що нового", - "zh-CN": "新内容", + es: 'Novedades', + fr: 'Quoi de neuf', + hi: 'क्या नया है', + id: 'Apa yang baru', + it: 'Novità', + ja: '新着情報', + ko: '새로운 소식', + 'pt-BR': 'Novidades', + 'pt-PT': 'Novidades', + ru: 'Что нового', + tr: 'Yeni neler var', + uk: 'Що нового', + 'zh-CN': '新内容', }, }, { - label: "Get started", + label: 'Get started', translations: { - da: "Kom godt i gang", - de: "Erste schritte", - en: "Get started", - es: "Empezar", - fr: "Commencer", - hi: "शुरू करें", - id: "Mulai", - it: "Iniziare", - ja: "始める", - ko: "시작하기", - "pt-BR": "Começar", - "pt-PT": "Começar", - ru: "Начать", - tr: "Başlamak", - uk: "Розпочати", - "zh-CN": "开始", + da: 'Kom godt i gang', + de: 'Erste schritte', + en: 'Get started', + es: 'Empezar', + fr: 'Commencer', + hi: 'शुरू करें', + id: 'Mulai', + it: 'Iniziare', + ja: '始める', + ko: '시작하기', + 'pt-BR': 'Começar', + 'pt-PT': 'Começar', + ru: 'Начать', + tr: 'Başlamak', + uk: 'Розпочати', + 'zh-CN': '开始', }, items: [ { - label: "Prerequisites", + label: 'Prerequisites', translations: { - da: "Forudsætninger", - de: "Voraussetzungen", - en: "Prerequisites", - es: "Requisitos previos", - fr: "Prérequis", - hi: "पूर्वापेक्षाएँ", - id: "Prasyarat", - it: "Prerequisiti", - ja: "前提条件", - ko: "전제 조건", - "pt-BR": "Pré-requisitos", - "pt-PT": "Pré-requisitos", - ru: "Предварительные требования", - tr: "Ön koşullar", - uk: "Попередні вимоги", - "zh-CN": "先决条件", + da: 'Forudsætninger', + de: 'Voraussetzungen', + en: 'Prerequisites', + es: 'Requisitos previos', + fr: 'Prérequis', + hi: 'पूर्वापेक्षाएँ', + id: 'Prasyarat', + it: 'Prerequisiti', + ja: '前提条件', + ko: '전제 조건', + 'pt-BR': 'Pré-requisitos', + 'pt-PT': 'Pré-requisitos', + ru: 'Предварительные требования', + tr: 'Ön koşullar', + uk: 'Попередні вимоги', + 'zh-CN': '先决条件', }, - slug: "get-started/prerequisites", + slug: 'get-started/prerequisites', }, { - label: "Install CLI", + label: 'Install CLI', translations: { - da: "Installer CLI", - de: "CLI installieren", - en: "Install CLI", - es: "Instalar CLI", - fr: "Installer CLI", - hi: "CLI इंस्टॉल करें", - id: "Instal CLI", - it: "Installa CLI", - ja: "CLI をインストール", - ko: "CLI 설치", - "pt-BR": "Instalar CLI", - "pt-PT": "Instalar CLI", - ru: "Установить CLI", - tr: "CLI Kur", - uk: "Встановити CLI", - "zh-CN": "安装 CLI", + da: 'Installer CLI', + de: 'CLI installieren', + en: 'Install CLI', + es: 'Instalar CLI', + fr: 'Installer CLI', + hi: 'CLI इंस्टॉल करें', + id: 'Instal CLI', + it: 'Installa CLI', + ja: 'CLI をインストール', + ko: 'CLI 설치', + 'pt-BR': 'Instalar CLI', + 'pt-PT': 'Instalar CLI', + ru: 'Установить CLI', + tr: 'CLI Kur', + uk: 'Встановити CLI', + 'zh-CN': '安装 CLI', }, - slug: "get-started/install-cli", + slug: 'get-started/install-cli', }, { - label: "Build your first app", + label: 'Build your first app', translations: { - da: "Byg din første app", - de: "Erstellen Sie Ihre erste App", - en: "Build your first app", - es: "Construye tu primera app", - fr: "Construisez votre première application", - hi: "अपना पहला ऐप बनाएं", - id: "Bangun aplikasi pertama Anda", - it: "Crea la tua prima app", - ja: "最初のアプリを作成", - ko: "첫 번째 앱 만들기", - "pt-BR": "Construa seu primeiro app", - "pt-PT": "Construa a sua primeira app", - ru: "Создайте свое первое приложение", - tr: "İlk uygulamanızı oluşturun", - uk: "Створіть свій перший додаток", - "zh-CN": "构建您的第一个应用", + da: 'Byg din første app', + de: 'Erstellen Sie Ihre erste App', + en: 'Build your first app', + es: 'Construye tu primera app', + fr: 'Construisez votre première application', + hi: 'अपना पहला ऐप बनाएं', + id: 'Bangun aplikasi pertama Anda', + it: 'Crea la tua prima app', + ja: '最初のアプリを作成', + ko: '첫 번째 앱 만들기', + 'pt-BR': 'Construa seu primeiro app', + 'pt-PT': 'Construa a sua primeira app', + ru: 'Создайте свое первое приложение', + tr: 'İlk uygulamanızı oluşturun', + uk: 'Створіть свій перший додаток', + 'zh-CN': '构建您的第一个应用', }, - slug: "get-started/first-app", + slug: 'get-started/first-app', }, { - label: "Deploy your first app", + label: 'Deploy your first app', translations: { - da: "Udrul din første app", - de: "Bereitstellung Ihrer ersten App", - en: "Deploy your first app", - es: "Despliega tu primera app", - fr: "Déployez votre première application", - hi: "अपना पहला ऐप तैनात करें", - id: "Deploy aplikasi pertama Anda", - it: "Distribuisci la tua prima app", - ja: "最初のアプリをデプロイ", - ko: "첫 번째 앱 배포", - "pt-BR": "Implante seu primeiro app", - "pt-PT": "Implemente a sua primeira app", - ru: "Разверните свое первое приложение", - tr: "İlk uygulamanızı dağıtın", - uk: "Розгорніть свій перший додаток", - "zh-CN": "部署您的第一个应用", + da: 'Udrul din første app', + de: 'Bereitstellung Ihrer ersten App', + en: 'Deploy your first app', + es: 'Despliega tu primera app', + fr: 'Déployez votre première application', + hi: 'अपना पहला ऐप तैनात करें', + id: 'Deploy aplikasi pertama Anda', + it: 'Distribuisci la tua prima app', + ja: '最初のアプリをデプロイ', + ko: '첫 번째 앱 배포', + 'pt-BR': 'Implante seu primeiro app', + 'pt-PT': 'Implemente a sua primeira app', + ru: 'Разверните свое первое приложение', + tr: 'İlk uygulamanızı dağıtın', + uk: 'Розгорніть свій перший додаток', + 'zh-CN': '部署您的第一个应用', }, - slug: "get-started/deploy-first-app", + slug: 'get-started/deploy-first-app', }, { - label: "Aspireify an existing app", + label: 'Aspireify an existing app', translations: { - da: "Aspireify en eksisterende app", - de: "Eine bestehende App Aspireify", - en: "Aspireify an existing app", - es: "Aspireify una aplicación existente", - fr: "Aspireify une application existante", - hi: "मौजूदा ऐप को Aspireify करें", - id: "Aspireify aplikasi yang sudah ada", + da: 'Aspireify en eksisterende app', + de: 'Eine bestehende App Aspireify', + en: 'Aspireify an existing app', + es: 'Aspireify una aplicación existente', + fr: 'Aspireify une application existante', + hi: 'मौजूदा ऐप को Aspireify करें', + id: 'Aspireify aplikasi yang sudah ada', it: "Aspireify un'app esistente", - ja: "既存のアプリを Aspireify する", - ko: "기존 앱을 Aspireify하기", - "pt-BR": "Aspireify um app existente", - "pt-PT": "Aspireify uma app existente", - ru: "Aspireify существующее приложение", - tr: "Mevcut bir uygulamayı Aspireify et", - uk: "Aspireify наявний застосунок", - "zh-CN": "对现有应用进行 Aspireify", + ja: '既存のアプリを Aspireify する', + ko: '기존 앱을 Aspireify하기', + 'pt-BR': 'Aspireify um app existente', + 'pt-PT': 'Aspireify uma app existente', + ru: 'Aspireify существующее приложение', + tr: 'Mevcut bir uygulamayı Aspireify et', + uk: 'Aspireify наявний застосунок', + 'zh-CN': '对现有应用进行 Aspireify', }, - slug: "get-started/add-aspire-existing-app", + slug: 'get-started/add-aspire-existing-app', }, ], }, { - label: "Fundamentals", + label: 'Fundamentals', collapsed: true, translations: { - da: "Begreber", - de: "Grundlagen", - en: "Fundamentals", - es: "Fundamentos", - fr: "Notions fondamentales", - hi: "मूल बातें", - id: "Dasar-dasar", - it: "Fondamenti", - ja: "基本", - ko: "기본 사항", - "pt-BR": "Fundamentos", - "pt-PT": "Fundamentos", - ru: "Основы", - tr: "Temeller", - uk: "Основи", - "zh-CN": "基础知识", + da: 'Begreber', + de: 'Grundlagen', + en: 'Fundamentals', + es: 'Fundamentos', + fr: 'Notions fondamentales', + hi: 'मूल बातें', + id: 'Dasar-dasar', + it: 'Fondamenti', + ja: '基本', + ko: '기본 사항', + 'pt-BR': 'Fundamentos', + 'pt-PT': 'Fundamentos', + ru: 'Основы', + tr: 'Temeller', + uk: 'Основи', + 'zh-CN': '基础知识', }, items: [ { - label: "What is Aspire?", + label: 'What is Aspire?', translations: { - da: "Hvad er Aspire?", - de: "Was ist Aspire?", - en: "What is Aspire?", - es: "¿Qué es Aspire?", - fr: "Qu’est-ce qu’Aspire ?", - hi: "Aspire क्या है?", - id: "Apa itu Aspire?", - it: "Che cos’è Aspire?", - ja: "Aspire とは何ですか?", - ko: "Aspire란 무엇인가요?", - "pt-BR": "O que é Aspire?", - "pt-PT": "O que é Aspire?", - ru: "Что такое Aspire?", - tr: "Aspire nedir?", - uk: "Що таке Aspire?", - "zh-CN": "Aspire 是什么?", + da: 'Hvad er Aspire?', + de: 'Was ist Aspire?', + en: 'What is Aspire?', + es: '¿Qué es Aspire?', + fr: 'Qu’est-ce qu’Aspire ?', + hi: 'Aspire क्या है?', + id: 'Apa itu Aspire?', + it: 'Che cos’è Aspire?', + ja: 'Aspire とは何ですか?', + ko: 'Aspire란 무엇인가요?', + 'pt-BR': 'O que é Aspire?', + 'pt-PT': 'O que é Aspire?', + ru: 'Что такое Aspire?', + tr: 'Aspire nedir?', + uk: 'Що таке Aspire?', + 'zh-CN': 'Aspire 是什么?', }, - slug: "get-started/what-is-aspire", + slug: 'get-started/what-is-aspire', }, { - label: "What is the AppHost?", + label: 'What is the AppHost?', translations: { - da: "Hvad er AppHost?", - de: "Was ist der AppHost?", - en: "What is the AppHost?", - es: "¿Qué es el AppHost?", + da: 'Hvad er AppHost?', + de: 'Was ist der AppHost?', + en: 'What is the AppHost?', + es: '¿Qué es el AppHost?', fr: "Qu'est-ce que l’AppHost ?", - hi: "AppHost क्या है?", - id: "Apa itu AppHost?", + hi: 'AppHost क्या है?', + id: 'Apa itu AppHost?', it: "Che cos'è l’AppHost?", - ja: "AppHost とは?", - ko: "AppHost란 무엇인가요?", - "pt-BR": "O que é o AppHost?", - "pt-PT": "O que é o AppHost?", - ru: "Что такое AppHost?", - tr: "AppHost nedir?", - uk: "Що таке AppHost?", - "zh-CN": "什么是 AppHost?", + ja: 'AppHost とは?', + ko: 'AppHost란 무엇인가요?', + 'pt-BR': 'O que é o AppHost?', + 'pt-PT': 'O que é o AppHost?', + ru: 'Что такое AppHost?', + tr: 'AppHost nedir?', + uk: 'Що таке AppHost?', + 'zh-CN': '什么是 AppHost?', }, - slug: "get-started/app-host", + slug: 'get-started/app-host', }, { - label: "Understanding resources", + label: 'Understanding resources', translations: { - da: "Forstå ressourcer", - de: "Ressourcen verstehen", - en: "Understanding resources", - es: "Comprender los recursos", - fr: "Comprendre les ressources", - hi: "संसाधनों को समझना", - id: "Memahami Sumber Daya", - it: "Comprendere le risorse", - ja: "リソースの理解", - ko: "리소스 이해", - "pt-BR": "Compreendendo os recursos", - "pt-PT": "Compreender os recursos", - ru: "Понимание ресурсов", - tr: "Kaynakları anlama", - uk: "Розуміння ресурсів", - "zh-CN": "了解资源", + da: 'Forstå ressourcer', + de: 'Ressourcen verstehen', + en: 'Understanding resources', + es: 'Comprender los recursos', + fr: 'Comprendre les ressources', + hi: 'संसाधनों को समझना', + id: 'Memahami Sumber Daya', + it: 'Comprendere le risorse', + ja: 'リソースの理解', + ko: '리소스 이해', + 'pt-BR': 'Compreendendo os recursos', + 'pt-PT': 'Compreender os recursos', + ru: 'Понимание ресурсов', + tr: 'Kaynakları anlama', + uk: 'Розуміння ресурсів', + 'zh-CN': '了解资源', }, - slug: "get-started/resources", + slug: 'get-started/resources', }, { - label: "Pipelines and app topology", + label: 'Pipelines and app topology', translations: { - da: "Udrulning og apptopologi", - de: "Bereitstellung und App-Topologie", - en: "Pipelines and app topology", - es: "Despliegue y topología de la aplicación", - fr: "Déploiement et topologie de l’application", - hi: "परिनियोजन और ऐप टोपोलॉजी", - id: "Penyebaran dan topologi aplikasi", - it: "Distribuzione e topologia dell’applicazione", - ja: "デプロイとアプリのトポロジ", - ko: "배포 및 앱 토폴로지", - "pt-BR": "Implantação e topologia do aplicativo", - "pt-PT": "Implementação e topologia da aplicação", - ru: "Развертывание и топология приложения", - tr: "Dağıtım ve uygulama topolojisi", - uk: "Розгортання і топологія застосунку", - "zh-CN": "部署与应用拓扑", + da: 'Udrulning og apptopologi', + de: 'Bereitstellung und App-Topologie', + en: 'Pipelines and app topology', + es: 'Despliegue y topología de la aplicación', + fr: 'Déploiement et topologie de l’application', + hi: 'परिनियोजन और ऐप टोपोलॉजी', + id: 'Penyebaran dan topologi aplikasi', + it: 'Distribuzione e topologia dell’applicazione', + ja: 'デプロイとアプリのトポロジ', + ko: '배포 및 앱 토폴로지', + 'pt-BR': 'Implantação e topologia do aplicativo', + 'pt-PT': 'Implementação e topologia da aplicação', + ru: 'Развертывание и топология приложения', + tr: 'Dağıtım ve uygulama topolojisi', + uk: 'Розгортання і топологія застосунку', + 'zh-CN': '部署与应用拓扑', }, - slug: "get-started/pipelines", + slug: 'get-started/pipelines', }, { - label: "Service discovery", + label: 'Service discovery', translations: { - da: "Tjenesteopdagelse", - de: "Dienstermittlung", - en: "Service discovery", - es: "Descubrimiento de servicios", - fr: "Découverte de services", - hi: "सेवा खोज", - id: "Penemuan layanan", - it: "Individuazione del servizio", - ja: "サービス検出", - ko: "서비스 검색", - "pt-BR": "Descoberta de serviços", - "pt-PT": "Descoberta de serviços", - ru: "Обнаружение служб", - tr: "Hizmet keşfi", - uk: "Виявлення служб", - "zh-CN": "服务发现", + da: 'Tjenesteopdagelse', + de: 'Dienstermittlung', + en: 'Service discovery', + es: 'Descubrimiento de servicios', + fr: 'Découverte de services', + hi: 'सेवा खोज', + id: 'Penemuan layanan', + it: 'Individuazione del servizio', + ja: 'サービス検出', + ko: '서비스 검색', + 'pt-BR': 'Descoberta de serviços', + 'pt-PT': 'Descoberta de serviços', + ru: 'Обнаружение служб', + tr: 'Hizmet keşfi', + uk: 'Виявлення служб', + 'zh-CN': '服务发现', }, - slug: "fundamentals/service-discovery", + slug: 'fundamentals/service-discovery', }, { - label: "Service defaults", + label: 'Service defaults', translations: { - da: "Tjenestestandarder", - de: "Dienst-Standardeinstellungen", - en: "Service defaults", - es: "Valores predeterminados del servicio", - fr: "Paramètres par défaut du service", - hi: "सेवा डिफ़ॉल्ट", - id: "Default layanan", - it: "Impostazioni predefinite del servizio", - ja: "サービスの既定値", - ko: "서비스 기본값", - "pt-BR": "Padrões de serviço", - "pt-PT": "Padrões de serviço", - ru: "Значения по умолчанию для служб", - tr: "Hizmet varsayılanları", - uk: "Значення за замовчуванням служби", - "zh-CN": "服务默认值", + da: 'Tjenestestandarder', + de: 'Dienst-Standardeinstellungen', + en: 'Service defaults', + es: 'Valores predeterminados del servicio', + fr: 'Paramètres par défaut du service', + hi: 'सेवा डिफ़ॉल्ट', + id: 'Default layanan', + it: 'Impostazioni predefinite del servizio', + ja: 'サービスの既定値', + ko: '서비스 기본값', + 'pt-BR': 'Padrões de serviço', + 'pt-PT': 'Padrões de serviço', + ru: 'Значения по умолчанию для служб', + tr: 'Hizmet varsayılanları', + uk: 'Значення за замовчуванням служби', + 'zh-CN': '服务默认值', }, - slug: "fundamentals/service-defaults", + slug: 'fundamentals/service-defaults', }, { - label: "Launch profiles", + label: 'Launch profiles', translations: { - da: "Start profiler", - de: "Startprofile", - en: "Launch profiles", - es: "Perfiles de inicio", - fr: "Profils de lancement", - hi: "लॉन्च प्रोफ़ाइल", - id: "Profil peluncuran", - it: "Profili di avvio", - ja: "起動プロファイル", - ko: "시작 프로필", - "pt-BR": "Perfis de inicialização", - "pt-PT": "Perfis de inicialização", - ru: "Профили запуска", - tr: "Başlatma profilleri", - uk: "Профілі запуску", - "zh-CN": "启动配置文件", + da: 'Start profiler', + de: 'Startprofile', + en: 'Launch profiles', + es: 'Perfiles de inicio', + fr: 'Profils de lancement', + hi: 'लॉन्च प्रोफ़ाइल', + id: 'Profil peluncuran', + it: 'Profili di avvio', + ja: '起動プロファイル', + ko: '시작 프로필', + 'pt-BR': 'Perfis de inicialização', + 'pt-PT': 'Perfis de inicialização', + ru: 'Профили запуска', + tr: 'Başlatma profilleri', + uk: 'Профілі запуску', + 'zh-CN': '启动配置文件', }, - slug: "fundamentals/launch-profiles", + slug: 'fundamentals/launch-profiles', }, { - label: "Health checks", + label: 'Health checks', translations: { - da: "Sundhedstjek", - de: "Integritätsprüfungen", - en: "Health checks", - es: "Comprobaciones de estado", + da: 'Sundhedstjek', + de: 'Integritätsprüfungen', + en: 'Health checks', + es: 'Comprobaciones de estado', fr: "Vérifications de l'état", - hi: "स्वास्थ्य जांच", - id: "Pemeriksaan kesehatan", - it: "Controlli di integrità", - ja: "正常性チェック", - ko: "상태 확인", - "pt-BR": "Verificações de integridade", - "pt-PT": "Verificações de integridade", - ru: "Проверки работоспособности", - tr: "Durum denetimleri", - uk: "Перевірки справності", - "zh-CN": "运行状况检查", + hi: 'स्वास्थ्य जांच', + id: 'Pemeriksaan kesehatan', + it: 'Controlli di integrità', + ja: '正常性チェック', + ko: '상태 확인', + 'pt-BR': 'Verificações de integridade', + 'pt-PT': 'Verificações de integridade', + ru: 'Проверки работоспособности', + tr: 'Durum denetimleri', + uk: 'Перевірки справності', + 'zh-CN': '运行状况检查', }, - slug: "fundamentals/health-checks", + slug: 'fundamentals/health-checks', }, ], }, { - label: "Testing", + label: 'Testing', collapsed: true, translations: { - da: "Test", - de: "Tests", - en: "Testing", - es: "Pruebas", - fr: "Tests", - hi: "परीक्षण", - id: "Pengujian", - it: "Test", - ja: "テスト", - ko: "테스트", - pt: "Testes", - "pt-BR": "Testes", - "pt-PT": "Testes", - ru: "Тестирование", - tr: "Test", - uk: "Тестування", - "zh-CN": "测试", + da: 'Test', + de: 'Tests', + en: 'Testing', + es: 'Pruebas', + fr: 'Tests', + hi: 'परीक्षण', + id: 'Pengujian', + it: 'Test', + ja: 'テスト', + ko: '테스트', + pt: 'Testes', + 'pt-BR': 'Testes', + 'pt-PT': 'Testes', + ru: 'Тестирование', + tr: 'Test', + uk: 'Тестування', + 'zh-CN': '测试', }, items: [ { - label: "Overview", + label: 'Overview', translations: { - da: "Oversigt", - de: "Übersicht", - en: "Overview", - es: "Descripción general", + da: 'Oversigt', + de: 'Übersicht', + en: 'Overview', + es: 'Descripción general', fr: "Vue d'ensemble", - hi: "अवलोकन", - id: "Ikhtisar", - it: "Panoramica", - ja: "概要", - ko: "개요", - pt: "Visão geral", - "pt-BR": "Visão geral", - "pt-PT": "Visão geral", - ru: "Обзор", - tr: "Genel Bakış", - uk: "Огляд", - "zh-CN": "概述", + hi: 'अवलोकन', + id: 'Ikhtisar', + it: 'Panoramica', + ja: '概要', + ko: '개요', + pt: 'Visão geral', + 'pt-BR': 'Visão geral', + 'pt-PT': 'Visão geral', + ru: 'Обзор', + tr: 'Genel Bakış', + uk: 'Огляд', + 'zh-CN': '概述', }, - slug: "testing/overview", + slug: 'testing/overview', }, { - label: "Write your first test", + label: 'Write your first test', translations: { - da: "Skriv din første test", - de: "Schreibe deinen ersten Test", - en: "Write your first test", - es: "Escribe tu primera prueba", - fr: "Écrivez votre premier test", - hi: "अपना पहला परीक्षण लिखें", - id: "Tulis tes pertama Anda", - it: "Scrivi il tuo primo test", - ja: "最初のテストを書く", - ko: "첫 번째 테스트 작성", - pt: "Escreva seu primeiro teste", - "pt-BR": "Escreva seu primeiro teste", - "pt-PT": "Escreva o seu primeiro teste", - ru: "Напишите свой первый тест", - tr: "İlk testinizi yazın", - uk: "Напишіть свій перший тест", - "zh-CN": "编写您的第一个测试", + da: 'Skriv din første test', + de: 'Schreibe deinen ersten Test', + en: 'Write your first test', + es: 'Escribe tu primera prueba', + fr: 'Écrivez votre premier test', + hi: 'अपना पहला परीक्षण लिखें', + id: 'Tulis tes pertama Anda', + it: 'Scrivi il tuo primo test', + ja: '最初のテストを書く', + ko: '첫 번째 테스트 작성', + pt: 'Escreva seu primeiro teste', + 'pt-BR': 'Escreva seu primeiro teste', + 'pt-PT': 'Escreva o seu primeiro teste', + ru: 'Напишите свой первый тест', + tr: 'İlk testinizi yazın', + uk: 'Напишіть свій перший тест', + 'zh-CN': '编写您的第一个测试', }, - slug: "testing/write-your-first-test", + slug: 'testing/write-your-first-test', }, { - label: "Manage the AppHost in tests", + label: 'Manage the AppHost in tests', translations: { - da: "Administrer AppHost i tests", - de: "Verwalten Sie den AppHost in Tests", - en: "Manage the AppHost in tests", - es: "Administrar el AppHost en pruebas", + da: 'Administrer AppHost i tests', + de: 'Verwalten Sie den AppHost in Tests', + en: 'Manage the AppHost in tests', + es: 'Administrar el AppHost en pruebas', fr: "Gérer l'AppHost dans les tests", - hi: "परीक्षणों में AppHost प्रबंधित करें", - id: "Kelola AppHost dalam tes", + hi: 'परीक्षणों में AppHost प्रबंधित करें', + id: 'Kelola AppHost dalam tes', it: "Gestisci l'AppHost nei test", - ja: "テストで AppHost を管理する", - ko: "테스트에서 AppHost 관리", - pt: "Gerenciar o AppHost em testes", - "pt-BR": "Gerenciar o AppHost em testes", - "pt-PT": "Gerir o AppHost em testes", - ru: "Управление AppHost в тестах", + ja: 'テストで AppHost を管理する', + ko: '테스트에서 AppHost 관리', + pt: 'Gerenciar o AppHost em testes', + 'pt-BR': 'Gerenciar o AppHost em testes', + 'pt-PT': 'Gerir o AppHost em testes', + ru: 'Управление AppHost в тестах', tr: "Testlerde AppHost'u yönetin", - uk: "Керування AppHost у тестах", - "zh-CN": "在测试中管理 AppHost", + uk: 'Керування AppHost у тестах', + 'zh-CN': '在测试中管理 AppHost', }, - slug: "testing/manage-app-host", + slug: 'testing/manage-app-host', }, { - label: "Access resources in tests", + label: 'Access resources in tests', translations: { - da: "Få adgang til ressourcer i tests", - de: "Zugriff auf Ressourcen in Tests", - en: "Access resources in tests", - es: "Acceder a recursos en pruebas", - fr: "Accéder aux ressources dans les tests", - hi: "परीक्षणों में संसाधनों तक पहुंचें", - id: "Akses sumber daya dalam tes", - it: "Accedi alle risorse nei test", - ja: "テストでリソースにアクセスする", - ko: "테스트에서 리소스 액세스", - pt: "Acessar recursos em testes", - "pt-BR": "Acessar recursos em testes", - "pt-PT": "Aceder a recursos em testes", - ru: "Доступ к ресурсам в тестах", - tr: "Testlerde kaynaklara erişin", - uk: "Доступ до ресурсів у тестах", - "zh-CN": "在测试中访问资源", + da: 'Få adgang til ressourcer i tests', + de: 'Zugriff auf Ressourcen in Tests', + en: 'Access resources in tests', + es: 'Acceder a recursos en pruebas', + fr: 'Accéder aux ressources dans les tests', + hi: 'परीक्षणों में संसाधनों तक पहुंचें', + id: 'Akses sumber daya dalam tes', + it: 'Accedi alle risorse nei test', + ja: 'テストでリソースにアクセスする', + ko: '테스트에서 리소스 액세스', + pt: 'Acessar recursos em testes', + 'pt-BR': 'Acessar recursos em testes', + 'pt-PT': 'Aceder a recursos em testes', + ru: 'Доступ к ресурсам в тестах', + tr: 'Testlerde kaynaklara erişin', + uk: 'Доступ до ресурсів у тестах', + 'zh-CN': '在测试中访问资源', }, - slug: "testing/accessing-resources", + slug: 'testing/accessing-resources', }, ], }, { - label: "Architecture", + label: 'Architecture', translations: { - da: "Arkitektur", - de: "Architektur", - en: "Architecture", - es: "Arquitectura", - fr: "Architecture", - hi: "आर्किटेक्चर", - id: "Arsitektur", - it: "Architettura", - ja: "アーキテクチャ", - ko: "아키텍처", - "pt-BR": "Arquitetura", - "pt-PT": "Arquitetura", - ru: "Архитектура", - tr: "Mimari", - uk: "Архітектура", - "zh-CN": "架构", + da: 'Arkitektur', + de: 'Architektur', + en: 'Architecture', + es: 'Arquitectura', + fr: 'Architecture', + hi: 'आर्किटेक्चर', + id: 'Arsitektur', + it: 'Architettura', + ja: 'アーキテクチャ', + ko: '아키텍처', + 'pt-BR': 'Arquitetura', + 'pt-PT': 'Arquitetura', + ru: 'Архитектура', + tr: 'Mimari', + uk: 'Архітектура', + 'zh-CN': '架构', }, collapsed: true, items: [ { - label: "Overview", + label: 'Overview', translations: { - da: "Oversigt", - de: "Übersicht", - en: "Overview", - es: "Descripción general", + da: 'Oversigt', + de: 'Übersicht', + en: 'Overview', + es: 'Descripción general', fr: "Vue d'ensemble", - hi: "अवलोकन", - id: "Ikhtisar", - it: "Panoramica", - ja: "概要", - ko: "개요", - pt: "Visão geral", - "pt-BR": "Visão geral", - "pt-PT": "Visão geral", - ru: "Обзор", - tr: "Genel Bakış", - uk: "Огляд", - "zh-CN": "概述", + hi: 'अवलोकन', + id: 'Ikhtisar', + it: 'Panoramica', + ja: '概要', + ko: '개요', + pt: 'Visão geral', + 'pt-BR': 'Visão geral', + 'pt-PT': 'Visão geral', + ru: 'Обзор', + tr: 'Genel Bakış', + uk: 'Огляд', + 'zh-CN': '概述', }, - slug: "architecture/overview", + slug: 'architecture/overview', }, { - label: "Resource model", + label: 'Resource model', translations: { - da: "Ressourcemodel", - de: "Ressourcenmodell", - en: "Resource model", - es: "Modelo de recurso", - fr: "Modèle de ressource", - hi: "संसाधन मॉडल", - id: "Model Sumber Daya", - it: "Modello di risorsa", - ja: "リソースモデル", - ko: "리소스 모델", - "pt-BR": "Modelo de Recurso", - "pt-PT": "Modelo de Recurso", - ru: "Модель ресурса", - tr: "Kaynak Modeli", - uk: "Модель ресурсу", - "zh-CN": "资源模型", + da: 'Ressourcemodel', + de: 'Ressourcenmodell', + en: 'Resource model', + es: 'Modelo de recurso', + fr: 'Modèle de ressource', + hi: 'संसाधन मॉडल', + id: 'Model Sumber Daya', + it: 'Modello di risorsa', + ja: 'リソースモデル', + ko: '리소스 모델', + 'pt-BR': 'Modelo de Recurso', + 'pt-PT': 'Modelo de Recurso', + ru: 'Модель ресурса', + tr: 'Kaynak Modeli', + uk: 'Модель ресурсу', + 'zh-CN': '资源模型', }, - slug: "architecture/resource-model", + slug: 'architecture/resource-model', }, { - label: "Resource hierarchies", + label: 'Resource hierarchies', translations: { - da: "Ressourcehierarkier", - de: "Ressourcenhierarchien", - en: "Resource hierarchies", - es: "Jerarquías de recursos", - fr: "Hiérarchies de ressources", - hi: "संसाधन पदानुक्रम", - id: "Hierarki Sumber Daya", - it: "Gerarchie delle risorse", - ja: "リソース階層", - ko: "리소스 계층", - "pt-BR": "Hierarquias de Recursos", - "pt-PT": "Hierarquias de Recursos", - ru: "Иерархии ресурсов", - tr: "Kaynak Hiyerarşileri", - uk: "Ієрархії ресурсів", - "zh-CN": "资源层次结构", + da: 'Ressourcehierarkier', + de: 'Ressourcenhierarchien', + en: 'Resource hierarchies', + es: 'Jerarquías de recursos', + fr: 'Hiérarchies de ressources', + hi: 'संसाधन पदानुक्रम', + id: 'Hierarki Sumber Daya', + it: 'Gerarchie delle risorse', + ja: 'リソース階層', + ko: '리소스 계층', + 'pt-BR': 'Hierarquias de Recursos', + 'pt-PT': 'Hierarquias de Recursos', + ru: 'Иерархии ресурсов', + tr: 'Kaynak Hiyerarşileri', + uk: 'Ієрархії ресурсів', + 'zh-CN': '资源层次结构', }, - slug: "architecture/resource-hierarchies", + slug: 'architecture/resource-hierarchies', }, { - label: "Resource API patterns", + label: 'Resource API patterns', translations: { - da: "Ressource-API-mønstre", - de: "Ressource-API-Muster", - en: "Resource API patterns", - es: "Patrones de API de recursos", + da: 'Ressource-API-mønstre', + de: 'Ressource-API-Muster', + en: 'Resource API patterns', + es: 'Patrones de API de recursos', fr: "Modèles d'API de ressources", - hi: "संसाधन एपीआई पैटर्न", - id: "Pola API Sumber Daya", - it: "Modelli di API di risorse", - ja: "リソースAPIパターン", - ko: "리소스 API 패턴", - "pt-BR": "Padrões de API de Recursos", - "pt-PT": "Padrões de API de Recursos", - ru: "Шаблоны API ресурсов", - tr: "Kaynak API Desenleri", - uk: "Шаблони API ресурсів", - "zh-CN": "资源API模式", + hi: 'संसाधन एपीआई पैटर्न', + id: 'Pola API Sumber Daya', + it: 'Modelli di API di risorse', + ja: 'リソースAPIパターン', + ko: '리소스 API 패턴', + 'pt-BR': 'Padrões de API de Recursos', + 'pt-PT': 'Padrões de API de Recursos', + ru: 'Шаблоны API ресурсов', + tr: 'Kaynak API Desenleri', + uk: 'Шаблони API ресурсів', + 'zh-CN': '资源API模式', }, - slug: "architecture/resource-api-patterns", + slug: 'architecture/resource-api-patterns', }, { - label: "Resource publishing", + label: 'Resource publishing', translations: { - da: "Ressourcepublicering", - de: "Ressourcenveröffentlichung", - en: "Resource publishing", - es: "Publicación de recursos", - fr: "Publication de ressources", - hi: "संसाधन प्रकाशन", - id: "Penerbitan Sumber Daya", - it: "Pubblicazione delle risorse", - ja: "リソースの公開", - ko: "리소스 게시", - "pt-BR": "Publicação de Recursos", - "pt-PT": "Publicação de Recursos", - ru: "Публикация ресурсов", - tr: "Kaynak Yayınlama", - uk: "Публікація ресурсів", - "zh-CN": "资源发布", + da: 'Ressourcepublicering', + de: 'Ressourcenveröffentlichung', + en: 'Resource publishing', + es: 'Publicación de recursos', + fr: 'Publication de ressources', + hi: 'संसाधन प्रकाशन', + id: 'Penerbitan Sumber Daya', + it: 'Pubblicazione delle risorse', + ja: 'リソースの公開', + ko: '리소스 게시', + 'pt-BR': 'Publicação de Recursos', + 'pt-PT': 'Publicação de Recursos', + ru: 'Публикация ресурсов', + tr: 'Kaynak Yayınlama', + uk: 'Публікація ресурсів', + 'zh-CN': '资源发布', }, - slug: "architecture/resource-publishing", + slug: 'architecture/resource-publishing', }, { - label: "Resource examples", + label: 'Resource examples', translations: { - da: "Ressourceeksempler", - de: "Ressourcenbeispiele", - en: "Resource examples", - es: "Ejemplos de recursos", - fr: "Exemples de ressources", - hi: "संसाधन उदाहरण", - id: "Contoh Sumber Daya", - it: "Esempi di risorse", - ja: "リソースの例", - ko: "리소스 예제", - "pt-BR": "Exemplos de Recursos", - "pt-PT": "Exemplos de Recursos", - ru: "Примеры ресурсов", - tr: "Kaynak Örnekleri", - uk: "Приклади ресурсів", - "zh-CN": "资源示例", + da: 'Ressourceeksempler', + de: 'Ressourcenbeispiele', + en: 'Resource examples', + es: 'Ejemplos de recursos', + fr: 'Exemples de ressources', + hi: 'संसाधन उदाहरण', + id: 'Contoh Sumber Daya', + it: 'Esempi di risorse', + ja: 'リソースの例', + ko: '리소스 예제', + 'pt-BR': 'Exemplos de Recursos', + 'pt-PT': 'Exemplos de Recursos', + ru: 'Примеры ресурсов', + tr: 'Kaynak Örnekleri', + uk: 'Приклади ресурсів', + 'zh-CN': '资源示例', }, - slug: "architecture/resource-examples", + slug: 'architecture/resource-examples', }, { - label: "Glossary", + label: 'Glossary', translations: { - da: "Ordbog", - de: "Glossar", - en: "Glossary", - es: "Glosario", - fr: "Glossaire", - hi: "शब्दावली", - id: "Kamus", - it: "Glossario", - ja: "用語集", - ko: "용어집", - "pt-BR": "Glossário", - "pt-PT": "Glossário", - ru: "Глоссарий", - tr: "Sözlük", - uk: "Глосарій", - "zh-CN": "术语表", + da: 'Ordbog', + de: 'Glossar', + en: 'Glossary', + es: 'Glosario', + fr: 'Glossaire', + hi: 'शब्दावली', + id: 'Kamus', + it: 'Glossario', + ja: '用語集', + ko: '용어집', + 'pt-BR': 'Glossário', + 'pt-PT': 'Glossário', + ru: 'Глоссарий', + tr: 'Sözlük', + uk: 'Глосарій', + 'zh-CN': '术语表', }, - slug: "architecture/glossary", + slug: 'architecture/glossary', }, ], }, @@ -701,680 +701,680 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ }, { label: { - en: "Integrations", - es: "Integraciones", - fr: "Intégrations", - de: "Integrationen", - it: "Integrazioni", - pt: "Integrações", - ru: "Интеграции", - "zh-CN": "集成", - da: "Integrationer", - hi: "इंटीग्रेशन", - id: "Integrasi", - ja: "インテグレーション", - ko: "통합", - "pt-BR": "Integrações", - "pt-PT": "Integrações", - tr: "Entegrasyonlar", - uk: "Інтеграції", + en: 'Integrations', + es: 'Integraciones', + fr: 'Intégrations', + de: 'Integrationen', + it: 'Integrazioni', + pt: 'Integrações', + ru: 'Интеграции', + 'zh-CN': '集成', + da: 'Integrationer', + hi: 'इंटीग्रेशन', + id: 'Integrasi', + ja: 'インテグレーション', + ko: '통합', + 'pt-BR': 'Integrações', + 'pt-PT': 'Integrações', + tr: 'Entegrasyonlar', + uk: 'Інтеграції', }, - link: "/integrations/gallery", - icon: "puzzle", + link: '/integrations/gallery', + icon: 'puzzle', items: [ { - label: "Explore", + label: 'Explore', translations: { - da: "Udforsk", - de: "Entdecken", - en: "Explore", - es: "Explorar", - fr: "Explorer", - hi: "अन्वेषण", - id: "Jelajahi", - it: "Esplora", - ja: "参照", - ko: "탐색", - pt: "Explorar", - "pt-BR": "Explorar", - "pt-PT": "Explorar", - ru: "Исследовать", - tr: "Keşfet", - uk: "Дослідити", - "zh-CN": "探索", + da: 'Udforsk', + de: 'Entdecken', + en: 'Explore', + es: 'Explorar', + fr: 'Explorer', + hi: 'अन्वेषण', + id: 'Jelajahi', + it: 'Esplora', + ja: '参照', + ko: '탐색', + pt: 'Explorar', + 'pt-BR': 'Explorar', + 'pt-PT': 'Explorar', + ru: 'Исследовать', + tr: 'Keşfet', + uk: 'Дослідити', + 'zh-CN': '探索', }, items: [ { - label: "Integration gallery", + label: 'Integration gallery', translations: { - da: "Integrationsgalleri", - de: "Integrationsgalerie", - en: "Integration gallery", - es: "Galería de integraciones", - fr: "Galerie d’intégrations", - hi: "इंटीग्रेशन गैलरी", - id: "Galeri integrasi", - it: "Galleria delle integrazioni", - ja: "インテグレーションギャラリー", - ko: "통합 갤러리", - pt: "Galeria de integrações", - "pt-BR": "Galeria de integrações", - "pt-PT": "Galeria de integrações", - ru: "Галерея интеграций", - tr: "Entegrasyon galerisi", - uk: "Галерея інтеграцій", - "zh-CN": "集成图库", + da: 'Integrationsgalleri', + de: 'Integrationsgalerie', + en: 'Integration gallery', + es: 'Galería de integraciones', + fr: 'Galerie d’intégrations', + hi: 'इंटीग्रेशन गैलरी', + id: 'Galeri integrasi', + it: 'Galleria delle integrazioni', + ja: 'インテグレーションギャラリー', + ko: '통합 갤러리', + pt: 'Galeria de integrações', + 'pt-BR': 'Galeria de integrações', + 'pt-PT': 'Galeria de integrações', + ru: 'Галерея интеграций', + tr: 'Entegrasyon galerisi', + uk: 'Галерея інтеграцій', + 'zh-CN': '集成图库', }, - slug: "integrations/gallery", + slug: 'integrations/gallery', }, { - label: "Overview", + label: 'Overview', translations: { - da: "Oversigt", - de: "Übersicht", - en: "Overview", - es: "Descripción general", + da: 'Oversigt', + de: 'Übersicht', + en: 'Overview', + es: 'Descripción general', fr: "Vue d'ensemble", - hi: "अवलोकन", - id: "Ikhtisar", - it: "Panoramica", - ja: "概要", - ko: "개요", - pt: "Visão geral", - "pt-BR": "Visão geral", - "pt-PT": "Visão geral", - ru: "Обзор", - tr: "Genel Bakış", - uk: "Огляд", - "zh-CN": "概述", + hi: 'अवलोकन', + id: 'Ikhtisar', + it: 'Panoramica', + ja: '概要', + ko: '개요', + pt: 'Visão geral', + 'pt-BR': 'Visão geral', + 'pt-PT': 'Visão geral', + ru: 'Обзор', + tr: 'Genel Bakış', + uk: 'Огляд', + 'zh-CN': '概述', }, - slug: "integrations/overview", + slug: 'integrations/overview', }, ], }, { - label: "Artificial Intelligence (AI)", + label: 'Artificial Intelligence (AI)', collapsed: true, translations: { - da: "Kunstig intelligens (AI)", - de: "Künstliche Intelligenz (KI)", - en: "Artificial Intelligence (AI)", - es: "Inteligencia Artificial (IA)", - fr: "Intelligence Artificielle (IA)", - hi: "कृत्रिम बुद्धिमत्ता (एआई)", - id: "Kecerdasan Buatan (AI)", - it: "Intelligenza Artificiale (IA)", - ja: "人工知能 (AI)", - ko: "인공지능 (AI)", - pt: "Inteligência Artificial (IA)", - "pt-BR": "Inteligência Artificial (IA)", - "pt-PT": "Inteligência Artificial (IA)", - ru: "Искусственный интеллект (ИИ)", - tr: "Yapay Zeka (YZ)", - uk: "Штучний інтелект (ШІ)", - "zh-CN": "人工智能 (AI)", + da: 'Kunstig intelligens (AI)', + de: 'Künstliche Intelligenz (KI)', + en: 'Artificial Intelligence (AI)', + es: 'Inteligencia Artificial (IA)', + fr: 'Intelligence Artificielle (IA)', + hi: 'कृत्रिम बुद्धिमत्ता (एआई)', + id: 'Kecerdasan Buatan (AI)', + it: 'Intelligenza Artificiale (IA)', + ja: '人工知能 (AI)', + ko: '인공지능 (AI)', + pt: 'Inteligência Artificial (IA)', + 'pt-BR': 'Inteligência Artificial (IA)', + 'pt-PT': 'Inteligência Artificial (IA)', + ru: 'Искусственный интеллект (ИИ)', + tr: 'Yapay Zeka (YZ)', + uk: 'Штучний інтелект (ШІ)', + 'zh-CN': '人工智能 (AI)', }, items: [ - { label: "GitHub Models", slug: "integrations/ai/github-models" }, - { label: "Ollama", slug: "integrations/ai/ollama" }, - { label: "OpenAI", slug: "integrations/ai/openai" }, + { label: 'GitHub Models', slug: 'integrations/ai/github-models' }, + { label: 'Ollama', slug: 'integrations/ai/ollama' }, + { label: 'OpenAI', slug: 'integrations/ai/openai' }, ], }, { - label: "Cloud providers", + label: 'Cloud providers', collapsed: true, translations: { - da: "Cloud-udbydere", - de: "Cloud-Anbieter", - en: "Cloud providers", - es: "Proveedores de la nube", - fr: "Fournisseurs de cloud", - hi: "क्लाउड प्रदाता", - id: "Penyedia Cloud", - it: "Provider Cloud", - ja: "クラウドプロバイダー", - ko: "클라우드 제공업체", - pt: "Provedores de Nuvem", - "pt-BR": "Provedores de Nuvem", - "pt-PT": "Provedores de Nuvem", - ru: "Облачные провайдеры", - tr: "Bulut Sağlayıcıları", - uk: "Хмарні провайдери", - "zh-CN": "云提供商", + da: 'Cloud-udbydere', + de: 'Cloud-Anbieter', + en: 'Cloud providers', + es: 'Proveedores de la nube', + fr: 'Fournisseurs de cloud', + hi: 'क्लाउड प्रदाता', + id: 'Penyedia Cloud', + it: 'Provider Cloud', + ja: 'クラウドプロバイダー', + ko: '클라우드 제공업체', + pt: 'Provedores de Nuvem', + 'pt-BR': 'Provedores de Nuvem', + 'pt-PT': 'Provedores de Nuvem', + ru: 'Облачные провайдеры', + tr: 'Bulut Sağlayıcıları', + uk: 'Хмарні провайдери', + 'zh-CN': '云提供商', }, items: [ { - label: "AWS", - link: "https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/aspire-integrations.html", + label: 'AWS', + link: 'https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/aspire-integrations.html', }, { - label: "Azure", + label: 'Azure', collapsed: true, items: [ - { label: "Overview", slug: "integrations/cloud/azure/overview" }, + { label: 'Overview', slug: 'integrations/cloud/azure/overview' }, { - label: "Customize Azure resources", - slug: "integrations/cloud/azure/customize-resources", + label: 'Customize Azure resources', + slug: 'integrations/cloud/azure/customize-resources', }, { - label: "Local Azure provisioning", - slug: "integrations/cloud/azure/local-provisioning", + label: 'Local Azure provisioning', + slug: 'integrations/cloud/azure/local-provisioning', }, { - label: "Configure Azure Container Apps", - slug: "integrations/cloud/azure/configure-container-apps", + label: 'Configure Azure Container Apps', + slug: 'integrations/cloud/azure/configure-container-apps', }, { - label: "Azure AI", + label: 'Azure AI', collapsed: true, items: [ { - label: "AI compatibility matrix", - slug: "integrations/cloud/azure/ai-compatibility-matrix", + label: 'AI compatibility matrix', + slug: 'integrations/cloud/azure/ai-compatibility-matrix', }, { - label: "Azure AI Foundry", - slug: "integrations/cloud/azure/azure-ai-foundry", + label: 'Azure AI Foundry', + slug: 'integrations/cloud/azure/azure-ai-foundry', }, { - label: "Azure AI Inference", - slug: "integrations/cloud/azure/azure-ai-inference", + label: 'Azure AI Inference', + slug: 'integrations/cloud/azure/azure-ai-inference', }, { - label: "Azure AI Search", - slug: "integrations/cloud/azure/azure-ai-search", + label: 'Azure AI Search', + slug: 'integrations/cloud/azure/azure-ai-search', }, { - label: "Azure OpenAI", - slug: "integrations/cloud/azure/azure-openai", + label: 'Azure OpenAI', + slug: 'integrations/cloud/azure/azure-openai', }, ], }, { - label: "Azure App Configuration", - slug: "integrations/cloud/azure/azure-app-configuration", + label: 'Azure App Configuration', + slug: 'integrations/cloud/azure/azure-app-configuration', }, { - label: "Azure App Service", - slug: "integrations/cloud/azure/azure-app-service", + label: 'Azure App Service', + slug: 'integrations/cloud/azure/azure-app-service', }, { - label: "Azure Cache for Redis", - slug: "integrations/cloud/azure/azure-cache-redis", + label: 'Azure Cache for Redis', + slug: 'integrations/cloud/azure/azure-cache-redis', }, { - label: "Azure Container Registry", - slug: "integrations/cloud/azure/azure-container-registry", + label: 'Azure Container Registry', + slug: 'integrations/cloud/azure/azure-container-registry', }, { - label: "Azure Cosmos DB", - slug: "integrations/cloud/azure/azure-cosmos-db", + label: 'Azure Cosmos DB', + slug: 'integrations/cloud/azure/azure-cosmos-db', }, { - label: "Azure Event Hubs", - slug: "integrations/cloud/azure/azure-event-hubs", + label: 'Azure Event Hubs', + slug: 'integrations/cloud/azure/azure-event-hubs', }, { - label: "Azure Functions", - slug: "integrations/cloud/azure/azure-functions", + label: 'Azure Functions', + slug: 'integrations/cloud/azure/azure-functions', }, { - label: "Azure Key Vault", - slug: "integrations/cloud/azure/azure-key-vault", + label: 'Azure Key Vault', + slug: 'integrations/cloud/azure/azure-key-vault', }, { - label: "Azure PostgreSQL", - slug: "integrations/cloud/azure/azure-postgresql", + label: 'Azure PostgreSQL', + slug: 'integrations/cloud/azure/azure-postgresql', }, { - label: "Azure Service Bus", - slug: "integrations/cloud/azure/azure-service-bus", + label: 'Azure Service Bus', + slug: 'integrations/cloud/azure/azure-service-bus', }, { - label: "Azure SignalR Service", - slug: "integrations/cloud/azure/azure-signalr", + label: 'Azure SignalR Service', + slug: 'integrations/cloud/azure/azure-signalr', }, { - label: "Azure SQL Database", - slug: "integrations/cloud/azure/azure-sql-database", + label: 'Azure SQL Database', + slug: 'integrations/cloud/azure/azure-sql-database', }, { - label: "Azure Storage", + label: 'Azure Storage', collapsed: true, items: [ { - label: "Azure Storage Blobs", - slug: "integrations/cloud/azure/azure-storage-blobs", + label: 'Azure Storage Blobs', + slug: 'integrations/cloud/azure/azure-storage-blobs', }, { - label: "Azure Storage Queues", - slug: "integrations/cloud/azure/azure-storage-queues", + label: 'Azure Storage Queues', + slug: 'integrations/cloud/azure/azure-storage-queues', }, { - label: "Azure Storage Tables", - slug: "integrations/cloud/azure/azure-storage-tables", + label: 'Azure Storage Tables', + slug: 'integrations/cloud/azure/azure-storage-tables', }, ], }, { - label: "Azure Web PubSub", - slug: "integrations/cloud/azure/azure-web-pubsub", + label: 'Azure Web PubSub', + slug: 'integrations/cloud/azure/azure-web-pubsub', }, { - label: "Azure Container App Jobs", - slug: "integrations/cloud/azure/container-app-jobs", + label: 'Azure Container App Jobs', + slug: 'integrations/cloud/azure/container-app-jobs', }, { - label: "User-assigned managed identity", - slug: "integrations/cloud/azure/user-assigned-identity", + label: 'User-assigned managed identity', + slug: 'integrations/cloud/azure/user-assigned-identity', }, { - label: "Manage role assignments", - slug: "integrations/cloud/azure/role-assignments", + label: 'Manage role assignments', + slug: 'integrations/cloud/azure/role-assignments', }, ], }, ], }, { - label: "Caching & state", + label: 'Caching & state', collapsed: true, translations: { - da: "Caching og tilstand", - de: "Caching & Zustand", - en: "Caching & state", - es: "Caché y estado", - fr: "Mise en cache et état", - hi: "कैशिंग और स्थिति", - id: "Caching & State", - it: "Caching e stato", - ja: "キャッシングと状態", - ko: "캐싱 및 상태", - pt: "Cache e Estado", - "pt-BR": "Cache e Estado", - "pt-PT": "Cache e Estado", - ru: "Кэширование и состояние", - tr: "Önbellekleme ve Durum", - uk: "Кешування та стан", - "zh-CN": "缓存与状态", + da: 'Caching og tilstand', + de: 'Caching & Zustand', + en: 'Caching & state', + es: 'Caché y estado', + fr: 'Mise en cache et état', + hi: 'कैशिंग और स्थिति', + id: 'Caching & State', + it: 'Caching e stato', + ja: 'キャッシングと状態', + ko: '캐싱 및 상태', + pt: 'Cache e Estado', + 'pt-BR': 'Cache e Estado', + 'pt-PT': 'Cache e Estado', + ru: 'Кэширование и состояние', + tr: 'Önbellekleme ve Durum', + uk: 'Кешування та стан', + 'zh-CN': '缓存与状态', }, items: [ { - label: "Redis", + label: 'Redis', collapsed: true, items: [ { - label: "Integration overview", - slug: "integrations/caching/redis", + label: 'Integration overview', + slug: 'integrations/caching/redis', }, { - label: "Community extensions", - slug: "integrations/caching/redis-extensions", + label: 'Community extensions', + slug: 'integrations/caching/redis-extensions', }, ], }, { - label: "Redis Distributed Cache", - slug: "integrations/caching/redis-distributed", + label: 'Redis Distributed Cache', + slug: 'integrations/caching/redis-distributed', }, { - label: "Redis Output Cache", - slug: "integrations/caching/redis-output", + label: 'Redis Output Cache', + slug: 'integrations/caching/redis-output', }, - { label: "Valkey", slug: "integrations/caching/valkey" }, - { label: "Garnet", slug: "integrations/caching/garnet" }, + { label: 'Valkey', slug: 'integrations/caching/valkey' }, + { label: 'Garnet', slug: 'integrations/caching/garnet' }, ], }, { - label: "Compute & hosting", + label: 'Compute & hosting', collapsed: true, translations: { - da: "Compute og hosting", - de: "Compute & hosting", - en: "Compute & hosting", - es: "Computación y alojamiento", - fr: "Calcul et hébergement", - hi: "कंप्यूट और होस्टिंग", - id: "Komputasi & hosting", - it: "Calcolo e hosting", - ja: "コンピューティングとホスティング", - ko: "컴퓨팅 및 호스팅", - pt: "Computação e hospedagem", - "pt-BR": "Computação e hospedagem", - "pt-PT": "Computação e alojamento", - ru: "Вычисления и хостинг", - tr: "Hesaplama ve Barındırma", - uk: "Обчислення та хостинг", - "zh-CN": "计算与托管", + da: 'Compute og hosting', + de: 'Compute & hosting', + en: 'Compute & hosting', + es: 'Computación y alojamiento', + fr: 'Calcul et hébergement', + hi: 'कंप्यूट और होस्टिंग', + id: 'Komputasi & hosting', + it: 'Calcolo e hosting', + ja: 'コンピューティングとホスティング', + ko: '컴퓨팅 및 호스팅', + pt: 'Computação e hospedagem', + 'pt-BR': 'Computação e hospedagem', + 'pt-PT': 'Computação e alojamento', + ru: 'Вычисления и хостинг', + tr: 'Hesaplama ve Barındırma', + uk: 'Обчислення та хостинг', + 'zh-CN': '计算与托管', }, items: [ - { label: "Docker", slug: "integrations/compute/docker" }, - { label: "Kubernetes", slug: "integrations/compute/kubernetes" }, + { label: 'Docker', slug: 'integrations/compute/docker' }, + { label: 'Kubernetes', slug: 'integrations/compute/kubernetes' }, ], }, { - label: "Data & databases", + label: 'Data & databases', collapsed: true, translations: { - da: "Database", - de: "Datenbank", - en: "Data & databases", - es: "Base de datos", - fr: "Base de données", - hi: "डेटाबेस", - id: "Basis Data", - it: "Database", - ja: "データベース", - ko: "데이터베이스", - pt: "Banco de dados", - "pt-BR": "Banco de dados", - "pt-PT": "Base de dados", - ru: "База данных", - tr: "Veritabanı", - uk: "База даних", - "zh-CN": "数据库", + da: 'Database', + de: 'Datenbank', + en: 'Data & databases', + es: 'Base de datos', + fr: 'Base de données', + hi: 'डेटाबेस', + id: 'Basis Data', + it: 'Database', + ja: 'データベース', + ko: '데이터베이스', + pt: 'Banco de dados', + 'pt-BR': 'Banco de dados', + 'pt-PT': 'Base de dados', + ru: 'База данных', + tr: 'Veritabanı', + uk: 'База даних', + 'zh-CN': '数据库', }, items: [ { - label: "Elasticsearch", - slug: "integrations/databases/elasticsearch", + label: 'Elasticsearch', + slug: 'integrations/databases/elasticsearch', }, { - label: "Entity Framework Core", + label: 'Entity Framework Core', items: [ { - label: "Overview", - slug: "integrations/databases/efcore/overview", + label: 'Overview', + slug: 'integrations/databases/efcore/overview', }, { - label: "Apply migrations", - slug: "integrations/databases/efcore/migrations", + label: 'Apply migrations', + slug: 'integrations/databases/efcore/migrations', }, { - label: "Seed data", - slug: "integrations/databases/efcore/seed-database", + label: 'Seed data', + slug: 'integrations/databases/efcore/seed-database', }, { - label: "Azure Cosmos DB", - slug: "integrations/databases/efcore/azure-cosmos-db", + label: 'Azure Cosmos DB', + slug: 'integrations/databases/efcore/azure-cosmos-db', }, { - label: "Azure PostgreSQL", - slug: "integrations/databases/efcore/azure-postgresql", + label: 'Azure PostgreSQL', + slug: 'integrations/databases/efcore/azure-postgresql', }, { - label: "Azure SQL", - slug: "integrations/databases/efcore/azure-sql", + label: 'Azure SQL', + slug: 'integrations/databases/efcore/azure-sql', }, { - label: "MySQL Pomelo", - slug: "integrations/databases/efcore/mysql", + label: 'MySQL Pomelo', + slug: 'integrations/databases/efcore/mysql', }, - { label: "Oracle", slug: "integrations/databases/efcore/oracle" }, + { label: 'Oracle', slug: 'integrations/databases/efcore/oracle' }, { - label: "PostgreSQL", - slug: "integrations/databases/efcore/postgresql", + label: 'PostgreSQL', + slug: 'integrations/databases/efcore/postgresql', }, { - label: "SQL Server", - slug: "integrations/databases/efcore/sql-server", + label: 'SQL Server', + slug: 'integrations/databases/efcore/sql-server', }, ], }, - { label: "KurrentDB", slug: "integrations/databases/kurrentdb" }, - { label: "Meilisearch", slug: "integrations/databases/meilisearch" }, - { label: "Milvus", slug: "integrations/databases/milvus" }, + { label: 'KurrentDB', slug: 'integrations/databases/kurrentdb' }, + { label: 'Meilisearch', slug: 'integrations/databases/meilisearch' }, + { label: 'Milvus', slug: 'integrations/databases/milvus' }, { - label: "MongoDB", + label: 'MongoDB', collapsed: true, items: [ { - label: "Integration overview", - slug: "integrations/databases/mongodb", + label: 'Integration overview', + slug: 'integrations/databases/mongodb', }, { - label: "Community extensions", - slug: "integrations/databases/mongodb-extensions", + label: 'Community extensions', + slug: 'integrations/databases/mongodb-extensions', }, ], }, { - label: "MySQL", + label: 'MySQL', collapsed: true, items: [ { - label: "Integration overview", - slug: "integrations/databases/mysql", + label: 'Integration overview', + slug: 'integrations/databases/mysql', }, { - label: "Community extensions", - slug: "integrations/databases/mysql-extensions", + label: 'Community extensions', + slug: 'integrations/databases/mysql-extensions', }, ], }, - { label: "Oracle", slug: "integrations/databases/oracle" }, + { label: 'Oracle', slug: 'integrations/databases/oracle' }, { - label: "PostgreSQL", + label: 'PostgreSQL', collapsed: true, items: [ { - label: "Get started", - slug: "integrations/databases/postgres/postgres-get-started", + label: 'Get started', + slug: 'integrations/databases/postgres/postgres-get-started', }, { - label: "Hosting integration (AppHost)", - slug: "integrations/databases/postgres/postgres-host", + label: 'Hosting integration (AppHost)', + slug: 'integrations/databases/postgres/postgres-host', }, { - label: "Client integration (Your app)", - slug: "integrations/databases/postgres/postgres-client", + label: 'Client integration (Your app)', + slug: 'integrations/databases/postgres/postgres-client', }, { - label: "Community extensions", - slug: "integrations/databases/postgres/postgresql-extensions", + label: 'Community extensions', + slug: 'integrations/databases/postgres/postgresql-extensions', }, ], }, - { label: "Qdrant", slug: "integrations/databases/qdrant" }, - { label: "RavenDB", slug: "integrations/databases/ravendb" }, + { label: 'Qdrant', slug: 'integrations/databases/qdrant' }, + { label: 'RavenDB', slug: 'integrations/databases/ravendb' }, { - label: "SQL Server", + label: 'SQL Server', collapsed: true, items: [ { - label: "Integration overview", - slug: "integrations/databases/sql-server", + label: 'Integration overview', + slug: 'integrations/databases/sql-server', }, { - label: "Community extensions", - slug: "integrations/databases/sql-server-extensions", + label: 'Community extensions', + slug: 'integrations/databases/sql-server-extensions', }, ], }, - { label: "SQLite", slug: "integrations/databases/sqlite" }, - { label: "SurrealDB", slug: "integrations/databases/surrealdb" }, + { label: 'SQLite', slug: 'integrations/databases/sqlite' }, + { label: 'SurrealDB', slug: 'integrations/databases/surrealdb' }, ], }, { - label: "Frameworks & runtimes", + label: 'Frameworks & runtimes', collapsed: true, translations: { - da: "Frameworks og runtime-miljøer", - de: "Frameworks & Laufzeiten", - en: "Frameworks & runtimes", - es: "Frameworks y entornos de ejecución", + da: 'Frameworks og runtime-miljøer', + de: 'Frameworks & Laufzeiten', + en: 'Frameworks & runtimes', + es: 'Frameworks y entornos de ejecución', fr: "Frameworks et environnements d'exécution", - hi: "फ्रेमवर्क और रनटाइम", - id: "Kerangka & Runtime", - it: "Framework e runtime", - ja: "フレームワークとランタイム", - ko: "프레임워크 및 런타임", - pt: "Frameworks e Runtimes", - "pt-BR": "Frameworks e Runtimes", - "pt-PT": "Frameworks e Runtimes", - ru: "Фреймворки и среды выполнения", - tr: "Çerçeveler ve Çalışma Zamanları", - uk: "Фреймворки та середовища виконання", - "zh-CN": "框架和运行时", + hi: 'फ्रेमवर्क और रनटाइम', + id: 'Kerangka & Runtime', + it: 'Framework e runtime', + ja: 'フレームワークとランタイム', + ko: '프레임워크 및 런타임', + pt: 'Frameworks e Runtimes', + 'pt-BR': 'Frameworks e Runtimes', + 'pt-PT': 'Frameworks e Runtimes', + ru: 'Фреймворки и среды выполнения', + tr: 'Çerçeveler ve Çalışma Zamanları', + uk: 'Фреймворки та середовища виконання', + 'zh-CN': '框架和运行时', }, items: [ - { label: "Bun apps", slug: "integrations/frameworks/bun-apps" }, - { label: "Dapr", slug: "integrations/frameworks/dapr" }, - { label: "Deno apps", slug: "integrations/frameworks/deno-apps" }, - { label: "Go apps", slug: "integrations/frameworks/go-apps" }, - { label: "Java", slug: "integrations/frameworks/java" }, - { label: ".NET MAUI", slug: "integrations/frameworks/maui" }, + { label: 'Bun apps', slug: 'integrations/frameworks/bun-apps' }, + { label: 'Dapr', slug: 'integrations/frameworks/dapr' }, + { label: 'Deno apps', slug: 'integrations/frameworks/deno-apps' }, + { label: 'Go apps', slug: 'integrations/frameworks/go-apps' }, + { label: 'Java', slug: 'integrations/frameworks/java' }, + { label: '.NET MAUI', slug: 'integrations/frameworks/maui' }, { - label: "Node.js extensions", - slug: "integrations/frameworks/nodejs-extensions", + label: 'Node.js extensions', + slug: 'integrations/frameworks/nodejs-extensions', }, - { label: "Orleans", slug: "integrations/frameworks/orleans" }, - { label: "PowerShell", slug: "integrations/frameworks/powershell" }, - { label: "Python", slug: "integrations/frameworks/python" }, - { label: "Rust", slug: "integrations/frameworks/rust" }, + { label: 'Orleans', slug: 'integrations/frameworks/orleans' }, + { label: 'PowerShell', slug: 'integrations/frameworks/powershell' }, + { label: 'Python', slug: 'integrations/frameworks/python' }, + { label: 'Rust', slug: 'integrations/frameworks/rust' }, ], }, { - label: "Messaging & eventing", + label: 'Messaging & eventing', collapsed: true, translations: { - da: "Meddelelser", - de: "Messaging", - en: "Messaging & eventing", - es: "Mensajería", - fr: "Messagerie", - hi: "मैसेजिंग", - id: "Pengiriman Pesan", - it: "Messaggistica", - ja: "メッセージング", - ko: "메시징", - pt: "Mensageria", - "pt-BR": "Mensageria", - "pt-PT": "Mensageria", - ru: "Обмен сообщениями", - tr: "Mesajlaşma", - uk: "Обмін повідомленнями", - "zh-CN": "消息传递", + da: 'Meddelelser', + de: 'Messaging', + en: 'Messaging & eventing', + es: 'Mensajería', + fr: 'Messagerie', + hi: 'मैसेजिंग', + id: 'Pengiriman Pesan', + it: 'Messaggistica', + ja: 'メッセージング', + ko: '메시징', + pt: 'Mensageria', + 'pt-BR': 'Mensageria', + 'pt-PT': 'Mensageria', + ru: 'Обмен сообщениями', + tr: 'Mesajlaşma', + uk: 'Обмін повідомленнями', + 'zh-CN': '消息传递', }, items: [ { - label: "Apache Kafka", - slug: "integrations/messaging/apache-kafka", + label: 'Apache Kafka', + slug: 'integrations/messaging/apache-kafka', }, - { label: "LavinMQ", slug: "integrations/messaging/lavinmq" }, - { label: "NATS", slug: "integrations/messaging/nats" }, - { label: "RabbitMQ", slug: "integrations/messaging/rabbitmq" }, + { label: 'LavinMQ', slug: 'integrations/messaging/lavinmq' }, + { label: 'NATS', slug: 'integrations/messaging/nats' }, + { label: 'RabbitMQ', slug: 'integrations/messaging/rabbitmq' }, ], }, { - label: "Security & identity", + label: 'Security & identity', collapsed: true, translations: { - da: "Sikkerhed og identitet", - de: "Sicherheit & Identität", - en: "Security & identity", - es: "Seguridad e identidad", - fr: "Sécurité et identité", - hi: "सुरक्षा और पहचान", - id: "Keamanan & Identitas", - it: "Sicurezza e identità", - ja: "セキュリティとアイデンティティ", - ko: "보안 및 ID", - pt: "Segurança e Identidade", - "pt-BR": "Segurança e Identidade", - "pt-PT": "Segurança e Identidade", - ru: "Безопасность и идентификация", - tr: "Güvenlik ve Kimlik", - uk: "Безпека та ідентичність", - "zh-CN": "安全与身份", + da: 'Sikkerhed og identitet', + de: 'Sicherheit & Identität', + en: 'Security & identity', + es: 'Seguridad e identidad', + fr: 'Sécurité et identité', + hi: 'सुरक्षा और पहचान', + id: 'Keamanan & Identitas', + it: 'Sicurezza e identità', + ja: 'セキュリティとアイデンティティ', + ko: '보안 및 ID', + pt: 'Segurança e Identidade', + 'pt-BR': 'Segurança e Identidade', + 'pt-PT': 'Segurança e Identidade', + ru: 'Безопасность и идентификация', + tr: 'Güvenlik ve Kimlik', + uk: 'Безпека та ідентичність', + 'zh-CN': '安全与身份', }, - items: [{ label: "Keycloak", slug: "integrations/security/keycloak" }], + items: [{ label: 'Keycloak', slug: 'integrations/security/keycloak' }], }, { - label: "Observability & logging", + label: 'Observability & logging', collapsed: true, translations: { - da: "Observerbarhed og logning", - de: "Beobachtbarkeit & Protokollierung", - en: "Observability & logging", - es: "Observabilidad y registro", - fr: "Observabilité et journalisation", - hi: "पर्यवेक्षण और लॉगिंग", - id: "Observabilitas & Logging", - it: "Osservabilità e registrazione", - ja: "可観測性とログ記録", - ko: "관측 가능성 및 로깅", - pt: "Observabilidade e Registro", - "pt-BR": "Observabilidade e Registro", - "pt-PT": "Observabilidade e Registo", - ru: "Наблюдаемость и ведение журналов", - tr: "Gözlemlenebilirlik ve Günlük Kaydı", - uk: "Спостережуваність та ведення журналів", - "zh-CN": "可观察性与日志记录", + da: 'Observerbarhed og logning', + de: 'Beobachtbarkeit & Protokollierung', + en: 'Observability & logging', + es: 'Observabilidad y registro', + fr: 'Observabilité et journalisation', + hi: 'पर्यवेक्षण और लॉगिंग', + id: 'Observabilitas & Logging', + it: 'Osservabilità e registrazione', + ja: '可観測性とログ記録', + ko: '관측 가능성 및 로깅', + pt: 'Observabilidade e Registro', + 'pt-BR': 'Observabilidade e Registro', + 'pt-PT': 'Observabilidade e Registo', + ru: 'Наблюдаемость и ведение журналов', + tr: 'Gözlemlenebilirlik ve Günlük Kaydı', + uk: 'Спостережуваність та ведення журналів', + 'zh-CN': '可观察性与日志记录', }, - items: [{ label: "Seq", slug: "integrations/observability/seq" }], + items: [{ label: 'Seq', slug: 'integrations/observability/seq' }], }, { - label: "Reverse proxies & APIs", + label: 'Reverse proxies & APIs', collapsed: true, translations: { da: "Reverse proxies & API'er", - de: "Reverse Proxies & APIs", - en: "Reverse proxies & APIs", - es: "Reverse proxies y APIs", - fr: "Reverse proxies et APIs", - hi: "रिवर्स प्रॉक्सी और एपीआई", - id: "Reverse Proxies & API", - it: "Reverse proxy e API", - ja: "リバースプロキシとAPI", - ko: "리버스 프록시 및 API", - pt: "Reverse Proxies e APIs", - "pt-BR": "Reverse Proxies e APIs", - "pt-PT": "Reverse Proxies e APIs", - ru: "Обратные прокси и API", + de: 'Reverse Proxies & APIs', + en: 'Reverse proxies & APIs', + es: 'Reverse proxies y APIs', + fr: 'Reverse proxies et APIs', + hi: 'रिवर्स प्रॉक्सी और एपीआई', + id: 'Reverse Proxies & API', + it: 'Reverse proxy e API', + ja: 'リバースプロキシとAPI', + ko: '리버스 프록시 및 API', + pt: 'Reverse Proxies e APIs', + 'pt-BR': 'Reverse Proxies e APIs', + 'pt-PT': 'Reverse Proxies e APIs', + ru: 'Обратные прокси и API', tr: "Ters Proxyler ve API'ler", - uk: "Зворотні проксі та API", - "zh-CN": "反向代理和API", + uk: 'Зворотні проксі та API', + 'zh-CN': '反向代理和API', }, items: [ { - label: "YARP (Yet Another Reverse Proxy)", - slug: "integrations/reverse-proxies/yarp", + label: 'YARP (Yet Another Reverse Proxy)', + slug: 'integrations/reverse-proxies/yarp', }, ], }, { - label: "Dev tools & extensions", + label: 'Dev tools & extensions', collapsed: true, translations: { - da: "Dev-værktøjer og udvidelser", - de: "Dev-Tools & Erweiterungen", - en: "Dev tools & extensions", - es: "Herramientas de desarrollo y extensiones", - fr: "Outils de développement et extensions", - hi: "डेव टूल्स और एक्सटेंशन", - id: "Alat & Ekstensi Dev", - it: "Strumenti di sviluppo ed estensioni", - ja: "開発ツールと拡張機能", - ko: "개발 도구 및 확장 프로그램", - pt: "Ferramentas e Extensões de Desenvolvimento", - "pt-BR": "Ferramentas e Extensões de Desenvolvimento", - "pt-PT": "Ferramentas e Extensões de Desenvolvimento", - ru: "Инструменты разработчика и расширения", - tr: "Geliştirici Araçları ve Uzantılar", - uk: "Інструменти розробника та розширення", - "zh-CN": "开发工具和扩展", + da: 'Dev-værktøjer og udvidelser', + de: 'Dev-Tools & Erweiterungen', + en: 'Dev tools & extensions', + es: 'Herramientas de desarrollo y extensiones', + fr: 'Outils de développement et extensions', + hi: 'डेव टूल्स और एक्सटेंशन', + id: 'Alat & Ekstensi Dev', + it: 'Strumenti di sviluppo ed estensioni', + ja: '開発ツールと拡張機能', + ko: '개발 도구 및 확장 프로그램', + pt: 'Ferramentas e Extensões de Desenvolvimento', + 'pt-BR': 'Ferramentas e Extensões de Desenvolvimento', + 'pt-PT': 'Ferramentas e Extensões de Desenvolvimento', + ru: 'Инструменты разработчика и расширения', + tr: 'Geliştirici Araçları ve Uzantılar', + uk: 'Інструменти розробника та розширення', + 'zh-CN': '开发工具和扩展', }, items: [ - { label: "Data API Builder", slug: "integrations/devtools/dab" }, - { label: "Dev Tunnels", slug: "integrations/devtools/dev-tunnels" }, - { label: "flagd", slug: "integrations/devtools/flagd" }, - { label: "goff", slug: "integrations/devtools/goff" }, - { label: "k6", slug: "integrations/devtools/k6" }, - { label: "MailPit", slug: "integrations/devtools/mailpit" }, + { label: 'Data API Builder', slug: 'integrations/devtools/dab' }, + { label: 'Dev Tunnels', slug: 'integrations/devtools/dev-tunnels' }, + { label: 'flagd', slug: 'integrations/devtools/flagd' }, + { label: 'goff', slug: 'integrations/devtools/goff' }, + { label: 'k6', slug: 'integrations/devtools/k6' }, + { label: 'MailPit', slug: 'integrations/devtools/mailpit' }, { - label: "SQL Database Projects", - slug: "integrations/devtools/sql-projects", + label: 'SQL Database Projects', + slug: 'integrations/devtools/sql-projects', }, ], }, @@ -1382,399 +1382,399 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ }, { label: { - en: "Dashboard", - es: "Panel", - fr: "Tableau de bord", - de: "Dashboard", - it: "Dashboard", - pt: "Painel", - ru: "Панель управления", - "zh-CN": "仪表板", - da: "Dashboard", - hi: "डैशबोर्ड", - id: "Dasbor", - ja: "ダッシュボード", - ko: "대시보드", - "pt-BR": "Painel", - "pt-PT": "Painel", - tr: "Gösterge Paneli", - uk: "Панель керування", + en: 'Dashboard', + es: 'Panel', + fr: 'Tableau de bord', + de: 'Dashboard', + it: 'Dashboard', + pt: 'Painel', + ru: 'Панель управления', + 'zh-CN': '仪表板', + da: 'Dashboard', + hi: 'डैशबोर्ड', + id: 'Dasbor', + ja: 'ダッシュボード', + ko: '대시보드', + 'pt-BR': 'Painel', + 'pt-PT': 'Painel', + tr: 'Gösterge Paneli', + uk: 'Панель керування', }, - link: "/dashboard/overview", - icon: "seti:happenings", + link: '/dashboard/overview', + icon: 'seti:happenings', items: [ { - label: "Overview", + label: 'Overview', translations: { - da: "Oversigt", - de: "Übersicht", - en: "Overview", - es: "Descripción general", + da: 'Oversigt', + de: 'Übersicht', + en: 'Overview', + es: 'Descripción general', fr: "Vue d'ensemble", - hi: "अवलोकन", - id: "Ikhtisar", - it: "Panoramica", - ja: "概要", - ko: "개요", - pt: "Visão geral", - "pt-BR": "Visão geral", - "pt-PT": "Visão geral", - ru: "Обзор", - tr: "Genel Bakış", - uk: "Огляд", - "zh-CN": "概述", + hi: 'अवलोकन', + id: 'Ikhtisar', + it: 'Panoramica', + ja: '概要', + ko: '개요', + pt: 'Visão geral', + 'pt-BR': 'Visão geral', + 'pt-PT': 'Visão geral', + ru: 'Обзор', + tr: 'Genel Bakış', + uk: 'Огляд', + 'zh-CN': '概述', }, - slug: "dashboard/overview", + slug: 'dashboard/overview', }, { - label: "Explore features", + label: 'Explore features', translations: { - da: "Udforsk funktioner", - de: "Funktionen erkunden", - en: "Explore features", - es: "Explorar funciones", - fr: "Explorer les fonctionnalités", - hi: "विशेषताएँ एक्सप्लोर करें", - id: "Jelajahi fitur", - it: "Esplora funzionalità", - ja: "機能を探る", - ko: "기능 탐색", - pt: "Explorar recursos", - "pt-BR": "Explorar recursos", - "pt-PT": "Explorar recursos", - ru: "Изучение функций", - tr: "Özellikleri keşfet", - uk: "Дослідити функції", - "zh-CN": "探索功能", + da: 'Udforsk funktioner', + de: 'Funktionen erkunden', + en: 'Explore features', + es: 'Explorar funciones', + fr: 'Explorer les fonctionnalités', + hi: 'विशेषताएँ एक्सप्लोर करें', + id: 'Jelajahi fitur', + it: 'Esplora funzionalità', + ja: '機能を探る', + ko: '기능 탐색', + pt: 'Explorar recursos', + 'pt-BR': 'Explorar recursos', + 'pt-PT': 'Explorar recursos', + ru: 'Изучение функций', + tr: 'Özellikleri keşfet', + uk: 'Дослідити функції', + 'zh-CN': '探索功能', }, - slug: "dashboard/explore", + slug: 'dashboard/explore', }, { - label: "GitHub Copilot", - slug: "dashboard/copilot", + label: 'GitHub Copilot', + slug: 'dashboard/copilot', }, { - label: "Aspire MCP server", + label: 'Aspire MCP server', translations: { - da: "Aspire MCP-server", - de: "Aspire MCP-Server", - en: "Aspire MCP server", - es: "Servidor Aspire MCP", - fr: "Serveur Aspire MCP", - hi: "Aspire MCP सर्वर", - id: "Server Aspire MCP", - it: "Server Aspire MCP", - ja: "Aspire MCPサーバー", - ko: "Aspire MCP 서버", - pt: "Servidor Aspire MCP", - "pt-BR": "Servidor Aspire MCP", - "pt-PT": "Servidor Aspire MCP", - ru: "Сервер Aspire MCP", - tr: "Aspire MCP sunucusu", - uk: "Сервер Aspire MCP", - "zh-CN": "Aspire MCP 服务器", + da: 'Aspire MCP-server', + de: 'Aspire MCP-Server', + en: 'Aspire MCP server', + es: 'Servidor Aspire MCP', + fr: 'Serveur Aspire MCP', + hi: 'Aspire MCP सर्वर', + id: 'Server Aspire MCP', + it: 'Server Aspire MCP', + ja: 'Aspire MCPサーバー', + ko: 'Aspire MCP 서버', + pt: 'Servidor Aspire MCP', + 'pt-BR': 'Servidor Aspire MCP', + 'pt-PT': 'Servidor Aspire MCP', + ru: 'Сервер Aspire MCP', + tr: 'Aspire MCP sunucusu', + uk: 'Сервер Aspire MCP', + 'zh-CN': 'Aspire MCP 服务器', }, - slug: "dashboard/mcp-server", + slug: 'dashboard/mcp-server', }, { - label: "Standalone mode", + label: 'Standalone mode', translations: { - da: "Selvstændig tilstand", - de: "Eigenständiger Modus", - en: "Standalone mode", - es: "Modo independiente", - fr: "Mode autonome", - hi: "स्टैंडअलोन मोड", - id: "Mode mandiri", - it: "Modalità autonoma", - ja: "スタンドアロンモード", - ko: "독립 실행 모드", - pt: "Modo autônomo", - "pt-BR": "Modo autônomo", - "pt-PT": "Modo autónomo", - ru: "Автономный режим", - tr: "Bağımsız mod", - uk: "Автономний режим", - "zh-CN": "独立模式", + da: 'Selvstændig tilstand', + de: 'Eigenständiger Modus', + en: 'Standalone mode', + es: 'Modo independiente', + fr: 'Mode autonome', + hi: 'स्टैंडअलोन मोड', + id: 'Mode mandiri', + it: 'Modalità autonoma', + ja: 'スタンドアロンモード', + ko: '독립 실행 모드', + pt: 'Modo autônomo', + 'pt-BR': 'Modo autônomo', + 'pt-PT': 'Modo autónomo', + ru: 'Автономный режим', + tr: 'Bağımsız mod', + uk: 'Автономний режим', + 'zh-CN': '独立模式', }, items: [ - { label: "Overview", slug: "dashboard/standalone" }, + { label: 'Overview', slug: 'dashboard/standalone' }, { - label: "Python apps", - slug: "dashboard/standalone-for-python", + label: 'Python apps', + slug: 'dashboard/standalone-for-python', }, { - label: "Node.js apps", - slug: "dashboard/standalone-for-nodejs", + label: 'Node.js apps', + slug: 'dashboard/standalone-for-nodejs', }, ], }, { - label: "Configuration", + label: 'Configuration', translations: { - da: "Konfiguration", - de: "Konfiguration", - en: "Configuration", - es: "Configuración", - fr: "Configuration", - hi: "कॉन्फ़िगरेशन", - id: "Konfigurasi", - it: "Configurazione", - ja: "構成", - ko: "구성", - pt: "Configuração", - "pt-BR": "Configuração", - "pt-PT": "Configuração", - ru: "Конфигурация", - tr: "Yapılandırma", - uk: "Конфігурація", - "zh-CN": "配置", + da: 'Konfiguration', + de: 'Konfiguration', + en: 'Configuration', + es: 'Configuración', + fr: 'Configuration', + hi: 'कॉन्फ़िगरेशन', + id: 'Konfigurasi', + it: 'Configurazione', + ja: '構成', + ko: '구성', + pt: 'Configuração', + 'pt-BR': 'Configuração', + 'pt-PT': 'Configuração', + ru: 'Конфигурация', + tr: 'Yapılandırma', + uk: 'Конфігурація', + 'zh-CN': '配置', }, - slug: "dashboard/configuration", + slug: 'dashboard/configuration', }, { - label: "Security considerations", + label: 'Security considerations', translations: { - da: "Sikkerhedsovervejelser", - de: "Sicherheitsüberlegungen", - en: "Security considerations", - es: "Consideraciones de seguridad", - fr: "Considérations de sécurité", - hi: "सुरक्षा संबंधी विचार", - id: "Pertimbangan keamanan", - it: "Considerazioni sulla sicurezza", - ja: "セキュリティに関する考慮事項", - ko: "보안 고려 사항", - pt: "Considerações de segurança", - "pt-BR": "Considerações de segurança", - "pt-PT": "Considerações de segurança", - ru: "Соображения безопасности", - tr: "Güvenlik değerlendirmeleri", - uk: "Міркування щодо безпеки", - "zh-CN": "安全注意事项", + da: 'Sikkerhedsovervejelser', + de: 'Sicherheitsüberlegungen', + en: 'Security considerations', + es: 'Consideraciones de seguridad', + fr: 'Considérations de sécurité', + hi: 'सुरक्षा संबंधी विचार', + id: 'Pertimbangan keamanan', + it: 'Considerazioni sulla sicurezza', + ja: 'セキュリティに関する考慮事項', + ko: '보안 고려 사항', + pt: 'Considerações de segurança', + 'pt-BR': 'Considerações de segurança', + 'pt-PT': 'Considerações de segurança', + ru: 'Соображения безопасности', + tr: 'Güvenlik değerlendirmeleri', + uk: 'Міркування щодо безпеки', + 'zh-CN': '安全注意事项', }, - slug: "dashboard/security-considerations", + slug: 'dashboard/security-considerations', }, { - label: "Enable browser telemetry", + label: 'Enable browser telemetry', translations: { - da: "Aktivér browsertelemetri", - de: "Browser-Telemetrie aktivieren", - en: "Enable browser telemetry", - es: "Habilitar telemetría del navegador", - fr: "Activer la télémétrie du navigateur", - hi: "ब्राउज़र टेलीमेट्री सक्षम करें", - id: "Aktifkan telemetri browser", - it: "Abilita telemetria del browser", - ja: "ブラウザのテレメトリを有効にする", - ko: "브라우저 원격 분석 활성화", - pt: "Ativar telemetria do navegador", - "pt-BR": "Ativar telemetria do navegador", - "pt-PT": "Ativar telemetria do navegador", - ru: "Включить телеметрию браузера", - tr: "Tarayıcı telemetrisi etkinleştirme", - uk: "Увімкнути телеметрію браузера", - "zh-CN": "启用浏览器遥测", + da: 'Aktivér browsertelemetri', + de: 'Browser-Telemetrie aktivieren', + en: 'Enable browser telemetry', + es: 'Habilitar telemetría del navegador', + fr: 'Activer la télémétrie du navigateur', + hi: 'ब्राउज़र टेलीमेट्री सक्षम करें', + id: 'Aktifkan telemetri browser', + it: 'Abilita telemetria del browser', + ja: 'ブラウザのテレメトリを有効にする', + ko: '브라우저 원격 분석 활성화', + pt: 'Ativar telemetria do navegador', + 'pt-BR': 'Ativar telemetria do navegador', + 'pt-PT': 'Ativar telemetria do navegador', + ru: 'Включить телеметрию браузера', + tr: 'Tarayıcı telemetrisi etkinleştirme', + uk: 'Увімкнути телеметрію браузера', + 'zh-CN': '启用浏览器遥测', }, - slug: "dashboard/enable-browser-telemetry", + slug: 'dashboard/enable-browser-telemetry', }, { - label: "Microsoft telemetry", + label: 'Microsoft telemetry', translations: { - da: "Microsoft telemetri", - de: "Microsoft-Telemetrie", - en: "Microsoft telemetry", - es: "Telemetría de Microsoft", - fr: "Télémétrie Microsoft", - hi: "Microsoft टेलीमेट्री", - id: "Telemetri Microsoft", - it: "Telemetria Microsoft", - ja: "Microsoft テレメトリ", - ko: "Microsoft 원격 분석", - pt: "Telemetria da Microsoft", - "pt-BR": "Telemetria da Microsoft", - "pt-PT": "Telemetria da Microsoft", - ru: "Телеметрия Microsoft", - tr: "Microsoft telemetrisi", - uk: "Телеметрія Microsoft", - "zh-CN": "Microsoft 遥测", + da: 'Microsoft telemetri', + de: 'Microsoft-Telemetrie', + en: 'Microsoft telemetry', + es: 'Telemetría de Microsoft', + fr: 'Télémétrie Microsoft', + hi: 'Microsoft टेलीमेट्री', + id: 'Telemetri Microsoft', + it: 'Telemetria Microsoft', + ja: 'Microsoft テレメトリ', + ko: 'Microsoft 원격 분석', + pt: 'Telemetria da Microsoft', + 'pt-BR': 'Telemetria da Microsoft', + 'pt-PT': 'Telemetria da Microsoft', + ru: 'Телеметрия Microsoft', + tr: 'Microsoft telemetrisi', + uk: 'Телеметрія Microsoft', + 'zh-CN': 'Microsoft 遥测', }, - slug: "dashboard/microsoft-collected-dashboard-telemetry", + slug: 'dashboard/microsoft-collected-dashboard-telemetry', }, ], }, { label: { - en: "CLI Reference", - es: "Referencia de CLI", - fr: "Référence CLI", - de: "CLI-Referenz", - it: "Riferimento CLI", - pt: "Referência de CLI", - ru: "Справочник CLI", - "zh-CN": "CLI 参考", - da: "CLI-reference", - hi: "CLI संदर्भ", - id: "Referensi CLI", - ja: "CLI リファレンス", - ko: "CLI 참고서", - "pt-BR": "Referência de CLI", - "pt-PT": "Referência de CLI", - tr: "CLI Referansı", - uk: "CLI Довідник", + en: 'CLI Reference', + es: 'Referencia de CLI', + fr: 'Référence CLI', + de: 'CLI-Referenz', + it: 'Riferimento CLI', + pt: 'Referência de CLI', + ru: 'Справочник CLI', + 'zh-CN': 'CLI 参考', + da: 'CLI-reference', + hi: 'CLI संदर्भ', + id: 'Referensi CLI', + ja: 'CLI リファレンス', + ko: 'CLI 참고서', + 'pt-BR': 'Referência de CLI', + 'pt-PT': 'Referência de CLI', + tr: 'CLI Referansı', + uk: 'CLI Довідник', }, - link: "/reference/cli/overview", - icon: "forward-slash", + link: '/reference/cli/overview', + icon: 'forward-slash', items: [ { - label: "Overview", + label: 'Overview', translations: { - da: "Oversigt", - de: "Übersicht", - en: "Overview", - es: "Descripción general", + da: 'Oversigt', + de: 'Übersicht', + en: 'Overview', + es: 'Descripción general', fr: "Vue d'ensemble", - hi: "अवलोकन", - id: "Ikhtisar", - it: "Panoramica", - ja: "概要", - ko: "개요", - pt: "Visão geral", - "pt-BR": "Visão geral", - "pt-PT": "Visão geral", - ru: "Обзор", - tr: "Genel Bakış", - uk: "Огляд", - "zh-CN": "概述", + hi: 'अवलोकन', + id: 'Ikhtisar', + it: 'Panoramica', + ja: '概要', + ko: '개요', + pt: 'Visão geral', + 'pt-BR': 'Visão geral', + 'pt-PT': 'Visão geral', + ru: 'Обзор', + tr: 'Genel Bakış', + uk: 'Огляд', + 'zh-CN': '概述', }, - slug: "reference/cli/overview", + slug: 'reference/cli/overview', }, { - label: "Install script", + label: 'Install script', translations: { - da: "Installationsscript", - de: "Installationsskript", - en: "Install script", - es: "Script de instalación", + da: 'Installationsscript', + de: 'Installationsskript', + en: 'Install script', + es: 'Script de instalación', fr: "Script d'installation", - hi: "इंस्टॉलेशन स्क्रिप्ट", - id: "Skrip Instalasi", - it: "Script di installazione", - ja: "インストールスクリプト", - ko: "설치 스크립트", - pt: "Script de instalação", - "pt-BR": "Script de instalação", - "pt-PT": "Script de instalação", - ru: "Скрипт установки", - tr: "Kurulum Betiği", - uk: "Скрипт установки", - "zh-CN": "安装脚本", + hi: 'इंस्टॉलेशन स्क्रिप्ट', + id: 'Skrip Instalasi', + it: 'Script di installazione', + ja: 'インストールスクリプト', + ko: '설치 스크립트', + pt: 'Script de instalação', + 'pt-BR': 'Script de instalação', + 'pt-PT': 'Script de instalação', + ru: 'Скрипт установки', + tr: 'Kurulum Betiği', + uk: 'Скрипт установки', + 'zh-CN': '安装脚本', }, - slug: "reference/cli/install-script", + slug: 'reference/cli/install-script', }, { - label: "Configuration", + label: 'Configuration', translations: { - da: "Konfiguration", - de: "Konfiguration", - en: "Configuration", - es: "Configuración", - fr: "Configuration", - hi: "कॉन्फ़िगरेशन", - id: "Konfigurasi", - it: "Configurazione", - ja: "構成", - ko: "구성", - pt: "Configuração", - "pt-BR": "Configuração", - "pt-PT": "Configuração", - ru: "Конфигурация", - tr: "Yapılandırma", - uk: "Конфігурація", - "zh-CN": "配置", + da: 'Konfiguration', + de: 'Konfiguration', + en: 'Configuration', + es: 'Configuración', + fr: 'Configuration', + hi: 'कॉन्फ़िगरेशन', + id: 'Konfigurasi', + it: 'Configurazione', + ja: '構成', + ko: '구성', + pt: 'Configuração', + 'pt-BR': 'Configuração', + 'pt-PT': 'Configuração', + ru: 'Конфигурация', + tr: 'Yapılandırma', + uk: 'Конфігурація', + 'zh-CN': '配置', }, - slug: "reference/cli/configuration", + slug: 'reference/cli/configuration', }, { - label: "Commands", + label: 'Commands', translations: { - da: "Kommandoer", - de: "Befehle", - en: "Commands", - es: "Comandos", - fr: "Commandes", - hi: "कमांड", - id: "Perintah", - it: "Comandi", - ja: "コマンド", - ko: "명령어", - pt: "Comandos", - "pt-BR": "Comandos", - "pt-PT": "Comandos", - ru: "Команды", - tr: "Komutlar", - uk: "Команди", - "zh-CN": "命令", + da: 'Kommandoer', + de: 'Befehle', + en: 'Commands', + es: 'Comandos', + fr: 'Commandes', + hi: 'कमांड', + id: 'Perintah', + it: 'Comandi', + ja: 'コマンド', + ko: '명령어', + pt: 'Comandos', + 'pt-BR': 'Comandos', + 'pt-PT': 'Comandos', + ru: 'Команды', + tr: 'Komutlar', + uk: 'Команди', + 'zh-CN': '命令', }, items: [ - { label: "aspire", slug: "reference/cli/commands/aspire" }, - { label: "aspire add", slug: "reference/cli/commands/aspire-add" }, + { label: 'aspire', slug: 'reference/cli/commands/aspire' }, + { label: 'aspire add', slug: 'reference/cli/commands/aspire-add' }, { - label: "aspire cache", + label: 'aspire cache', collapsed: true, items: [ { - label: "aspire cache", - slug: "reference/cli/commands/aspire-cache", + label: 'aspire cache', + slug: 'reference/cli/commands/aspire-cache', }, { - label: "aspire cache clear", - slug: "reference/cli/commands/aspire-cache-clear", + label: 'aspire cache clear', + slug: 'reference/cli/commands/aspire-cache-clear', }, ], }, { - label: "aspire config", + label: 'aspire config', collapsed: true, items: [ { - label: "aspire config", - slug: "reference/cli/commands/aspire-config", + label: 'aspire config', + slug: 'reference/cli/commands/aspire-config', }, { - label: "aspire config list", - slug: "reference/cli/commands/aspire-config-list", + label: 'aspire config list', + slug: 'reference/cli/commands/aspire-config-list', }, { - label: "aspire config get", - slug: "reference/cli/commands/aspire-config-get", + label: 'aspire config get', + slug: 'reference/cli/commands/aspire-config-get', }, { - label: "aspire config set", - slug: "reference/cli/commands/aspire-config-set", + label: 'aspire config set', + slug: 'reference/cli/commands/aspire-config-set', }, { - label: "aspire config delete", - slug: "reference/cli/commands/aspire-config-delete", + label: 'aspire config delete', + slug: 'reference/cli/commands/aspire-config-delete', }, ], }, { - label: "aspire deploy", - slug: "reference/cli/commands/aspire-deploy", + label: 'aspire deploy', + slug: 'reference/cli/commands/aspire-deploy', }, - { label: "aspire do", slug: "reference/cli/commands/aspire-do" }, - { label: "aspire exec", slug: "reference/cli/commands/aspire-exec" }, - { label: "aspire init", slug: "reference/cli/commands/aspire-init" }, - { label: "aspire new", slug: "reference/cli/commands/aspire-new" }, + { label: 'aspire do', slug: 'reference/cli/commands/aspire-do' }, + { label: 'aspire exec', slug: 'reference/cli/commands/aspire-exec' }, + { label: 'aspire init', slug: 'reference/cli/commands/aspire-init' }, + { label: 'aspire new', slug: 'reference/cli/commands/aspire-new' }, { - label: "aspire publish", - slug: "reference/cli/commands/aspire-publish", + label: 'aspire publish', + slug: 'reference/cli/commands/aspire-publish', }, - { label: "aspire run", slug: "reference/cli/commands/aspire-run" }, + { label: 'aspire run', slug: 'reference/cli/commands/aspire-run' }, { - label: "aspire update", - slug: "reference/cli/commands/aspire-update", + label: 'aspire update', + slug: 'reference/cli/commands/aspire-update', }, ], }, @@ -1795,204 +1795,204 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ // }, { label: { - en: "Community", - es: "Comunidad", - fr: "Communauté", - de: "Gemeinschaft", - it: "Comunità", - pt: "Comunidade", - ru: "Сообщество", - "zh-CN": "社区", - da: "Fællesskab", - hi: "समुदाय", - id: "Komunitas", - ja: "コミュニティ", - ko: "커뮤니티", - "pt-BR": "Comunidade", - "pt-PT": "Comunidade", - tr: "Topluluk", - uk: "Спільнота", + en: 'Community', + es: 'Comunidad', + fr: 'Communauté', + de: 'Gemeinschaft', + it: 'Comunità', + pt: 'Comunidade', + ru: 'Сообщество', + 'zh-CN': '社区', + da: 'Fællesskab', + hi: 'समुदाय', + id: 'Komunitas', + ja: 'コミュニティ', + ko: '커뮤니티', + 'pt-BR': 'Comunidade', + 'pt-PT': 'Comunidade', + tr: 'Topluluk', + uk: 'Спільнота', }, - link: "/community/contributors", - icon: "heart", + link: '/community/contributors', + icon: 'heart', items: [ { - label: "Contributors", + label: 'Contributors', translations: { - da: "Bidragydere", - de: "Mitwirkende", - en: "Contributors", - es: "Colaboradores", - fr: "Contributeurs", - hi: "योगदानकर्ता", - id: "Kontributor", - it: "Collaboratori", - ja: "コントリビューター", - ko: "기여자", - pt: "Contribuidores", - "pt-BR": "Contribuidores", - "pt-PT": "Contribuidores", - ru: "Участники", - tr: "Katkıda Bulunanlar", - uk: "Учасники", - "zh-CN": "贡献者", + da: 'Bidragydere', + de: 'Mitwirkende', + en: 'Contributors', + es: 'Colaboradores', + fr: 'Contributeurs', + hi: 'योगदानकर्ता', + id: 'Kontributor', + it: 'Collaboratori', + ja: 'コントリビューター', + ko: '기여자', + pt: 'Contribuidores', + 'pt-BR': 'Contribuidores', + 'pt-PT': 'Contribuidores', + ru: 'Участники', + tr: 'Katkıda Bulunanlar', + uk: 'Учасники', + 'zh-CN': '贡献者', }, items: [ { - label: "Contributor overview", + label: 'Contributor overview', translations: { - da: "Oversigt over bidragydere", - de: "Übersicht der Mitwirkenden", - en: "Contributor overview", - es: "Descripción general del colaborador", - fr: "Aperçu des contributeurs", - hi: "योगदानकर्ता अवलोकन", - id: "Ikhtisar kontributor", - it: "Panoramica dei collaboratori", - ja: "コントリビューターの概要", - ko: "기여자 개요", - pt: "Visão geral do contribuinte", - "pt-BR": "Visão geral do contribuinte", - "pt-PT": "Visão geral do contribuinte", - ru: "Обзор участников", - tr: "Katkıda Bulunanlar Genel Bakışı", - uk: "Огляд учасників", - "zh-CN": "贡献者概述", + da: 'Oversigt over bidragydere', + de: 'Übersicht der Mitwirkenden', + en: 'Contributor overview', + es: 'Descripción general del colaborador', + fr: 'Aperçu des contributeurs', + hi: 'योगदानकर्ता अवलोकन', + id: 'Ikhtisar kontributor', + it: 'Panoramica dei collaboratori', + ja: 'コントリビューターの概要', + ko: '기여자 개요', + pt: 'Visão geral do contribuinte', + 'pt-BR': 'Visão geral do contribuinte', + 'pt-PT': 'Visão geral do contribuinte', + ru: 'Обзор участников', + tr: 'Katkıda Bulunanlar Genel Bakışı', + uk: 'Огляд учасників', + 'zh-CN': '贡献者概述', }, - slug: "community/contributors", + slug: 'community/contributors', }, { - label: "Contributor guide", + label: 'Contributor guide', translations: { - da: "Bidragydervejledning", - de: "Mitwirkenden-Leitfaden", - en: "Contributor guide", - es: "Guía del colaborador", - fr: "Guide du contributeur", - hi: "योगदानकर्ता गाइड", - id: "Panduan kontributor", - it: "Guida per i collaboratori", - ja: "コントリビューターガイド", - ko: "기여자 가이드", - pt: "Guia do contribuinte", - "pt-BR": "Guia do contribuinte", - "pt-PT": "Guia do contribuinte", - ru: "Руководство для участников", - tr: "Katkıda Bulunanlar Kılavuzu", - uk: "Посібник для учасників", - "zh-CN": "贡献者指南", + da: 'Bidragydervejledning', + de: 'Mitwirkenden-Leitfaden', + en: 'Contributor guide', + es: 'Guía del colaborador', + fr: 'Guide du contributeur', + hi: 'योगदानकर्ता गाइड', + id: 'Panduan kontributor', + it: 'Guida per i collaboratori', + ja: 'コントリビューターガイド', + ko: '기여자 가이드', + pt: 'Guia do contribuinte', + 'pt-BR': 'Guia do contribuinte', + 'pt-PT': 'Guia do contribuinte', + ru: 'Руководство для участников', + tr: 'Katkıda Bulunanlar Kılavuzu', + uk: 'Посібник для учасників', + 'zh-CN': '贡献者指南', }, - slug: "community/contributor-guide", + slug: 'community/contributor-guide', }, ], }, { - label: "BlueSky", - slug: "community/posts", + label: 'BlueSky', + slug: 'community/posts', badge: { - text: "#aspire", - variant: "note", + text: '#aspire', + variant: 'note', }, }, { - label: "Videos", + label: 'Videos', translations: { - da: "Videoer", - de: "Videos", - en: "Videos", - es: "Videos", - fr: "Vidéos", - hi: "वीडियो", - id: "Video", - it: "Video", - ja: "動画", - ko: "비디오", - pt: "Vídeos", - "pt-BR": "Vídeos", - "pt-PT": "Vídeos", - ru: "Видео", - tr: "Videolar", - uk: "Відео", - "zh-CN": "视频", + da: 'Videoer', + de: 'Videos', + en: 'Videos', + es: 'Videos', + fr: 'Vidéos', + hi: 'वीडियो', + id: 'Video', + it: 'Video', + ja: '動画', + ko: '비디오', + pt: 'Vídeos', + 'pt-BR': 'Vídeos', + 'pt-PT': 'Vídeos', + ru: 'Видео', + tr: 'Videolar', + uk: 'Відео', + 'zh-CN': '视频', }, - slug: "community/videos", + slug: 'community/videos', }, ], }, { label: { - en: "Diagnostics", - es: "Diagnósticos", - fr: "Diagnostics", - de: "Diagnose", - it: "Diagnostica", - pt: "Diagnósticos", - ru: "Диагностика", - "zh-CN": "诊断", - da: "Diagnostik", - hi: "निदान", - id: "Diagnostik", - ja: "診断", - ko: "진단", - "pt-BR": "Diagnósticos", - "pt-PT": "Diagnósticos", - tr: "Tanılama", - uk: "Діагностика", + en: 'Diagnostics', + es: 'Diagnósticos', + fr: 'Diagnostics', + de: 'Diagnose', + it: 'Diagnostica', + pt: 'Diagnósticos', + ru: 'Диагностика', + 'zh-CN': '诊断', + da: 'Diagnostik', + hi: 'निदान', + id: 'Diagnostik', + ja: '診断', + ko: '진단', + 'pt-BR': 'Diagnósticos', + 'pt-PT': 'Diagnósticos', + tr: 'Tanılama', + uk: 'Діагностика', }, - link: "/diagnostics/overview/", - icon: "warning", + link: '/diagnostics/overview/', + icon: 'warning', items: [ - { label: "Overview", link: "/diagnostics/overview" }, + { label: 'Overview', link: '/diagnostics/overview' }, { - label: "Warnings", + label: 'Warnings', items: [ - { label: "ASPIRE001", link: "/diagnostics/aspire001" }, - { label: "ASPIRE002", link: "/diagnostics/aspire002" }, - { label: "ASPIRE003", link: "/diagnostics/aspire003" }, - { label: "ASPIRE004", link: "/diagnostics/aspire004" }, + { label: 'ASPIRE001', link: '/diagnostics/aspire001' }, + { label: 'ASPIRE002', link: '/diagnostics/aspire002' }, + { label: 'ASPIRE003', link: '/diagnostics/aspire003' }, + { label: 'ASPIRE004', link: '/diagnostics/aspire004' }, ], }, { - label: "Errors", + label: 'Errors', items: [ - { label: "ASPIRE006", link: "/diagnostics/aspire006" }, - { label: "ASPIRE007", link: "/diagnostics/aspire007" }, - { label: "ASPIRE008", link: "/diagnostics/aspire008" }, + { label: 'ASPIRE006', link: '/diagnostics/aspire006' }, + { label: 'ASPIRE007', link: '/diagnostics/aspire007' }, + { label: 'ASPIRE008', link: '/diagnostics/aspire008' }, { - label: "ASPIREACADOMAIN001", - link: "/diagnostics/aspireacadomains001", + label: 'ASPIREACADOMAIN001', + link: '/diagnostics/aspireacadomains001', }, - { label: "ASPIRECOMPUTE001", link: "/diagnostics/aspirecompute001" }, + { label: 'ASPIRECOMPUTE001', link: '/diagnostics/aspirecompute001' }, { - label: "ASPIRECOSMOSDB001", - link: "/diagnostics/aspirecosmosdb001", + label: 'ASPIRECOSMOSDB001', + link: '/diagnostics/aspirecosmosdb001', }, { - label: "ASPIREHOSTINGPYTHON001", - link: "/diagnostics/aspirehostingpython001", + label: 'ASPIREHOSTINGPYTHON001', + link: '/diagnostics/aspirehostingpython001', }, { - label: "ASPIREPIPELINES001", - link: "/diagnostics/aspirepipelines001", + label: 'ASPIREPIPELINES001', + link: '/diagnostics/aspirepipelines001', }, { - label: "ASPIREPIPELINES002", - link: "/diagnostics/aspirepipelines002", + label: 'ASPIREPIPELINES002', + link: '/diagnostics/aspirepipelines002', }, { - label: "ASPIREPIPELINES003", - link: "/diagnostics/aspirepipelines003", + label: 'ASPIREPIPELINES003', + link: '/diagnostics/aspirepipelines003', }, { - label: "ASPIREPROXYENDPOINTS001", - link: "/diagnostics/aspireproxyendpoints001", + label: 'ASPIREPROXYENDPOINTS001', + link: '/diagnostics/aspireproxyendpoints001', }, { - label: "ASPIREPUBLISHERS001", - link: "/diagnostics/aspirepublishers001", + label: 'ASPIREPUBLISHERS001', + link: '/diagnostics/aspirepublishers001', }, - { label: "ASPIREAZURE001", link: "/diagnostics/aspireazure001" }, - { label: "ASPIREAZURE002", link: "/diagnostics/aspireazure002" }, + { label: 'ASPIREAZURE001', link: '/diagnostics/aspireazure001' }, + { label: 'ASPIREAZURE002', link: '/diagnostics/aspireazure002' }, ], }, ], diff --git a/src/frontend/config/socials.config.ts b/src/frontend/config/socials.config.ts index ade60dce..ca0f22e1 100644 --- a/src/frontend/config/socials.config.ts +++ b/src/frontend/config/socials.config.ts @@ -1,38 +1,38 @@ export type SocialLink = { - icon: 'github' | 'discord' | 'x.com' | 'blueSky' | 'youtube' | 'twitch'; - label: string; - href: string; + icon: 'github' | 'discord' | 'x.com' | 'blueSky' | 'youtube' | 'twitch'; + label: string; + href: string; }; export const socialConfig: SocialLink[] = [ - { - icon: 'github', - label: 'GitHub', - href: 'https://github.com/dotnet/aspire' - }, - { - icon: 'discord', - label: 'Discord', - href: 'https://discord.com/invite/raNPcaaSj8' - }, - { - icon: 'x.com', - label: 'X', - href: 'https://x.com/aspiredotdev' - }, - { - icon: 'blueSky', - label: 'BlueSky', - href: 'https://bsky.app/profile/aspire.dev' - }, - { - icon: 'youtube', - label: 'YouTube', - href: 'https://www.youtube.com/@aspiredotdev' - }, - { - icon: 'twitch', - label: 'Twitch', - href: 'https://www.twitch.tv/aspiredotdev' - } -]; \ No newline at end of file + { + icon: 'github', + label: 'GitHub', + href: 'https://github.com/dotnet/aspire', + }, + { + icon: 'discord', + label: 'Discord', + href: 'https://discord.com/invite/raNPcaaSj8', + }, + { + icon: 'x.com', + label: 'X', + href: 'https://x.com/aspiredotdev', + }, + { + icon: 'blueSky', + label: 'BlueSky', + href: 'https://bsky.app/profile/aspire.dev', + }, + { + icon: 'youtube', + label: 'YouTube', + href: 'https://www.youtube.com/@aspiredotdev', + }, + { + icon: 'twitch', + label: 'Twitch', + href: 'https://www.twitch.tv/aspiredotdev', + }, +]; diff --git a/src/frontend/ec.config.mjs b/src/frontend/ec.config.mjs index c3ebb18f..fbc737d7 100644 --- a/src/frontend/ec.config.mjs +++ b/src/frontend/ec.config.mjs @@ -4,12 +4,8 @@ import { pluginDisableCopy } from './src/expressive-code-plugins/disable-copy.mj /** @type {import('@astrojs/starlight/expressive-code').StarlightExpressiveCodeOptions} */ export default { - plugins: [ - pluginCollapsibleSections(), - pluginLineNumbers(), - pluginDisableCopy() - ], - defaultProps: { - showLineNumbers: false - } -} \ No newline at end of file + plugins: [pluginCollapsibleSections(), pluginLineNumbers(), pluginDisableCopy()], + defaultProps: { + showLineNumbers: false, + }, +}; diff --git a/src/frontend/eslint.config.mjs b/src/frontend/eslint.config.mjs new file mode 100644 index 00000000..320a030b --- /dev/null +++ b/src/frontend/eslint.config.mjs @@ -0,0 +1,88 @@ +// @ts-check +import { dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import globals from 'globals'; +import prettierConfig from 'eslint-config-prettier'; + +export default [ + // Ignore hidden files and directories, `*.d.ts` files (as most recommendations are mostly for + // users rather than libraries), types testing files, example directories, and build directories. + { + ignores: [ + '**/.*', + '**/*.d.ts', + '**/*.test-d.ts', + '**/examples/', + '**/dist/', + '**/build/', + '**/examples/', + ], + }, + + // Setup Node.js globals from `globalThis` (does not include CommonJS arguments). + { + languageOptions: { + globals: { + ...globals.nodeBuiltin, + }, + }, + }, + + // Add ESLint recommended rules. + eslint.configs.recommended, + + // Add TypeScript ESLint recommended rules with type checking. + ...tseslint.configs.recommendedTypeChecked, + // Setup typed linting. + { + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: dirname(fileURLToPath(import.meta.url)), + }, + }, + }, + // Disabled typed linting in JavaScript files. + { + files: ['**/*.js', '**/*.cjs', '**/*.mjs'], + ...tseslint.configs.disableTypeChecked, + }, + + // Disable all formatting rules. + prettierConfig, + + // Tweak some rules in all files. + { + rules: { + // Allow triple-slash references that we heavily use. + '@typescript-eslint/triple-slash-reference': 'off', + // Disable unbound method checks which requires another plugin to properly work with `expect` + // calls. + '@typescript-eslint/unbound-method': 'off', + // Allow empty catch blocks. + 'no-empty': ['error', { allowEmptyCatch: true }], + // Allow unused variables for sibling properties in destructuring (used to omit properties) + // or starting with `_`. + '@typescript-eslint/no-unused-vars': [ + 'error', + { + ignoreRestSiblings: true, + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + argsIgnorePattern: '^_', + }, + ], + // Allow using `any` in rest parameter arrays, e.g. `(...args: any[]) => void`. + '@typescript-eslint/no-explicit-any': ['error', { ignoreRestArgs: true }], + // Allow duplicated types in unions as it's not an error and the extra verbosity can make it + // easier to understand some unions, e.g. for Zod input and output types. + '@typescript-eslint/no-duplicate-type-constituents': 'off', + // Allow redundant types in unions as it's not an error and we use such mechanisms to provide + // fallbacks for some types that may not be accessible in some user environments, e.g. i18n + // keys for plugins. + '@typescript-eslint/no-redundant-type-constituents': 'off', + }, + }, +]; diff --git a/src/frontend/lunaria.config.json b/src/frontend/lunaria.config.json index e23a680e..27a5ba18 100644 --- a/src/frontend/lunaria.config.json +++ b/src/frontend/lunaria.config.json @@ -95,13 +95,8 @@ } ] }, - "customCss": [ - "./lunaria/styles.css" - ], - "basesToHide": [ - "src/content/docs/", - "src/i18n/" - ], + "customCss": ["./lunaria/styles.css"], + "basesToHide": ["src/content/docs/", "src/i18n/"], "ui": { "statusByLocale.heading": "Translation progress by locale", "statusByLocale.incompleteLocalizationLink": "incomplete translation", @@ -110,13 +105,6 @@ "statusByFile.heading": "Translation status by file" } }, - "ignoreKeywords": [ - "lunaria-ignore", - "typo", - "en-only", - "broken link", - "i18nReady", - "i18nIgnore" - ], + "ignoreKeywords": ["lunaria-ignore", "typo", "en-only", "broken link", "i18nReady", "i18nIgnore"], "renderer": "./lunaria/renderer.config.ts" -} \ No newline at end of file +} diff --git a/src/frontend/lunaria/components.ts b/src/frontend/lunaria/components.ts index a19cc38f..2b639f8e 100644 --- a/src/frontend/lunaria/components.ts +++ b/src/frontend/lunaria/components.ts @@ -1,18 +1,18 @@ import { html } from '@lunariajs/core'; export const TitleParagraph = () => html` -

- If you're interested in helping us translate - https://aspire.dev into one of the languages - listed below, you've come to the right place! This auto-updating page always lists all the - content that could use your help right now. -

-

- Before starting a new translation, please read our - translation guide - to learn about our translation process and how you can get involved. -

-`; \ No newline at end of file +

+ If you're interested in helping us translate + https://aspire.dev into one of the languages listed below, + you've come to the right place! This auto-updating page always lists all the content that could + use your help right now. +

+

+ Before starting a new translation, please read our + translation guide + to learn about our translation process and how you can get involved. +

+`; diff --git a/src/frontend/lunaria/renderer.config.ts b/src/frontend/lunaria/renderer.config.ts index f51b2ab4..9d0f44a3 100644 --- a/src/frontend/lunaria/renderer.config.ts +++ b/src/frontend/lunaria/renderer.config.ts @@ -2,7 +2,7 @@ import { defineRendererConfig } from '@lunariajs/core'; import { TitleParagraph } from './components'; export default defineRendererConfig({ - slots: { - afterTitle: TitleParagraph, - }, -}); \ No newline at end of file + slots: { + afterTitle: TitleParagraph, + }, +}); diff --git a/src/frontend/lunaria/styles.css b/src/frontend/lunaria/styles.css index 8f5b9b2e..bea7a949 100644 --- a/src/frontend/lunaria/styles.css +++ b/src/frontend/lunaria/styles.css @@ -1,38 +1,40 @@ :root { - /* Prefer the site's Aspire variables when available, fall back to previous values */ - --theme-accent: var(--aspire-color-primary, hsl(234, 85%, 65%)); - --theme-bg: var(--sl-color-bg, hsl(223, 13%, 10%)); - --theme-table-header: var(--sl-color-bg-nav, hsl(222, 13%, 16%)); - --theme-table-hover: var(--sl-color-gray-6, hsl(222, 13%, 16%)); - --theme-text: var(--sl-color-text, hsl(228, 8%, 77%)); - --theme-text-bright: var(--sl-color-white, #fff); - --overlay-blurple: hsla(255, 60%, 60%, 0.08); + /* Prefer the site's Aspire variables when available, fall back to previous values */ + --theme-accent: var(--aspire-color-primary, hsl(234, 85%, 65%)); + --theme-bg: var(--sl-color-bg, hsl(223, 13%, 10%)); + --theme-table-header: var(--sl-color-bg-nav, hsl(222, 13%, 16%)); + --theme-table-hover: var(--sl-color-gray-6, hsl(222, 13%, 16%)); + --theme-text: var(--sl-color-text, hsl(228, 8%, 77%)); + --theme-text-bright: var(--sl-color-white, #fff); + --overlay-blurple: hsla(255, 60%, 60%, 0.08); - /* Lunaria specific aliasing so other styles can keep using ln- prefixed variables */ - --ln-color-background: linear-gradient(215deg, var(--overlay-blurple), transparent 40%), - radial-gradient(var(--overlay-blurple), transparent 40%) no-repeat -60vw -40vh / 105vw 200vh, - radial-gradient(var(--overlay-blurple), transparent 65%) no-repeat 50% calc(100% + 20rem) / - 60rem 30rem, - var(--theme-bg); - --ln-color-link: var(--theme-accent); - --ln-color-black: var(--theme-text); - --ln-color-done: var(--color-blue, #0078D7); - --ln-color-outdated: #ea580c; - --ln-color-missing: var(--theme-text-bright); - --ln-color-table-background: var(--theme-table-header); - --ln-color-table-border: var(--theme-table-header); + /* Lunaria specific aliasing so other styles can keep using ln- prefixed variables */ + --ln-color-background: + linear-gradient(215deg, var(--overlay-blurple), transparent 40%), + radial-gradient(var(--overlay-blurple), transparent 40%) no-repeat -60vw -40vh / 105vw 200vh, + radial-gradient(var(--overlay-blurple), transparent 65%) no-repeat 50% calc(100% + 20rem) / + 60rem 30rem, + var(--theme-bg); + --ln-color-link: var(--theme-accent); + --ln-color-black: var(--theme-text); + --ln-color-done: var(--color-blue, #0078d7); + --ln-color-outdated: #ea580c; + --ln-color-missing: var(--theme-text-bright); + --ln-color-table-background: var(--theme-table-header); + --ln-color-table-border: var(--theme-table-header); - /* Let browsers pick an appropriate color-scheme unless the site forces it */ - color-scheme: light dark; + /* Let browsers pick an appropriate color-scheme unless the site forces it */ + color-scheme: light dark; } /* Light theme overrides: prefer the site's light theme variables when present */ :root[data-theme='light'] { - --theme-bg: var(--sl-color-bg, var(--aspire-color-white, #fff)); - --theme-text: var(--sl-color-text, var(--aspire-color-black, #111)); - --theme-table-header: var(--sl-color-bg-nav, rgba(0,0,0,0.03)); - --overlay-blurple: hsla(230, 90%, 60%, 0.06); - --ln-color-background: linear-gradient(215deg, var(--overlay-blurple), transparent 40%), var(--theme-bg); + --theme-bg: var(--sl-color-bg, var(--aspire-color-white, #fff)); + --theme-text: var(--sl-color-text, var(--aspire-color-black, #111)); + --theme-table-header: var(--sl-color-bg-nav, rgba(0, 0, 0, 0.03)); + --overlay-blurple: hsla(230, 90%, 60%, 0.06); + --ln-color-background: + linear-gradient(215deg, var(--overlay-blurple), transparent 40%), var(--theme-bg); } /* Headings should align with the site's typographic color */ @@ -42,45 +44,49 @@ h3, h4, h5, h6 { - color: var(--sl-color-text, var(--theme-text)); + color: var(--sl-color-text, var(--theme-text)); } /* Links in paragraphs keep an underline but use the shared accent color */ p a { - text-decoration: underline; - color: var(--ln-color-link); + text-decoration: underline; + color: var(--ln-color-link); } /* Use the site's accent for the create button and make it subtle and consistent */ .create-button { - background: linear-gradient(90deg, color-mix(in srgb, var(--theme-accent) 16%, transparent), transparent); - border-radius: 0.5em; - color: var(--theme-text-bright); - border: 1px solid color-mix(in srgb, var(--theme-accent) 12%, transparent); + background: linear-gradient( + 90deg, + color-mix(in srgb, var(--theme-accent) 16%, transparent), + transparent + ); + border-radius: 0.5em; + color: var(--theme-text-bright); + border: 1px solid color-mix(in srgb, var(--theme-accent) 12%, transparent); } /* Preserve existing small layout tweaks */ sup { - display: flex; - justify-content: center; + display: flex; + justify-content: center; } /* Small utilities: tables and hover states that match the site */ table { - background: var(--ln-color-table-background); - border-collapse: collapse; + background: var(--ln-color-table-background); + border-collapse: collapse; } table tbody tr:hover { - background: var(--theme-table-hover); + background: var(--theme-table-hover); } /* Reduce visual noise on very small screens */ @media (max-width: 480px) { - :root { - --overlay-blurple: hsla(255, 60%, 60%, 0.06); - } - .create-button { - padding: 0.45rem 0.8rem; - } -} \ No newline at end of file + :root { + --overlay-blurple: hsla(255, 60%, 60%, 0.06); + } + .create-button { + padding: 0.45rem 0.8rem; + } +} diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index a87dbd8b..71c1ce89 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -42,10 +42,16 @@ "vanilla-cookieconsent": "^3.1.0" }, "devDependencies": { + "@eslint/js": "^9.39.1", "astro-embed": "^0.9.1", "astro-vtbot": "^2.1.9", "cross-env": "^10.1.0", - "node-fetch": "^3.3.2" + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.8", + "node-fetch": "^3.3.2", + "prettier": "^3.7.4", + "prettier-plugin-astro": "^0.14.1", + "typescript-eslint": "^8.48.1" } }, "node_modules/@11ty/eleventy-fetch": { @@ -1157,6 +1163,163 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@expressive-code/core": { "version": "0.41.3", "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.3.tgz", @@ -1256,6 +1419,58 @@ "url": "https://github.com/sponsors/ayuhito" } }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", @@ -2687,6 +2902,13 @@ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -2763,6 +2985,263 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.1.tgz", + "integrity": "sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/type-utils": "8.48.1", + "@typescript-eslint/utils": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.48.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.1.tgz", + "integrity": "sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.1.tgz", + "integrity": "sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.48.1", + "@typescript-eslint/types": "^8.48.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.1.tgz", + "integrity": "sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.1.tgz", + "integrity": "sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.1.tgz", + "integrity": "sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1", + "@typescript-eslint/utils": "8.48.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz", + "integrity": "sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.1.tgz", + "integrity": "sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.48.1", + "@typescript-eslint/tsconfig-utils": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/visitor-keys": "8.48.1", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.1.tgz", + "integrity": "sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.48.1", + "@typescript-eslint/types": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.1.tgz", + "integrity": "sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.48.1", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -2845,6 +3324,23 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -3368,6 +3864,16 @@ "base64-js": "^1.1.2" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -3538,6 +4044,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -4300,6 +4826,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", @@ -4598,6 +5131,248 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-util-attach-comments": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", @@ -4689,6 +5464,16 @@ "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -4741,6 +5526,20 @@ "node": ">=8.6.0" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-xml-parser": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.0.tgz", @@ -4809,6 +5608,33 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-entry-cache/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -4821,6 +5647,23 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -5525,6 +6368,33 @@ "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/import-meta-resolve": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", @@ -5535,6 +6405,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5771,6 +6651,20 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "license": "MIT" }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/katex": { "version": "0.16.22", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", @@ -5856,6 +6750,20 @@ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", "license": "MIT" }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/linkedom": { "version": "0.18.12", "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.12.tgz", @@ -5903,12 +6811,35 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -7186,6 +8117,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/neotraverse": { "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", @@ -7324,6 +8262,24 @@ "regex-recursion": "^6.0.2" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7348,6 +8304,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -7404,6 +8405,19 @@ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "license": "MIT" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-entities": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", @@ -7477,6 +8491,16 @@ "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", "license": "MIT" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -7625,6 +8649,47 @@ "node": ">=4" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-astro": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", + "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.9.1", + "prettier": "^3.0.0", + "sass-formatter": "^0.7.6" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", @@ -7666,6 +8731,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", @@ -8053,6 +9128,16 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/restructure": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", @@ -8232,12 +9317,29 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "license": "BSD-3-Clause" }, + "node_modules/s.color": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", + "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", + "dev": true, + "license": "MIT" + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/sass-formatter": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", + "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "suf-log": "^2.5.3" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -8677,6 +9779,19 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strnum": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", @@ -8713,6 +9828,16 @@ "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT" }, + "node_modules/suf-log": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", + "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", + "dev": true, + "license": "MIT", + "dependencies": { + "s.color": "0.0.15" + } + }, "node_modules/supports-color": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", @@ -8888,6 +10013,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -8929,6 +10067,19 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", @@ -8955,6 +10106,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.48.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.48.1.tgz", + "integrity": "sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.48.1", + "@typescript-eslint/parser": "8.48.1", + "@typescript-eslint/typescript-estree": "8.48.1", + "@typescript-eslint/utils": "8.48.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/ufo": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", @@ -9328,6 +10503,16 @@ } } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9613,6 +10798,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", diff --git a/src/frontend/package.json b/src/frontend/package.json index e04f6480..8dcba714 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -13,8 +13,8 @@ }, "homepage": "https://github.com/microsoft/aspire.dev#readme", "scripts": { - "git-env": "node ./scripts/write-git-env.cjs", - "check-data": "node ./scripts/check-data-files.cjs", + "git-env": "node ./scripts/write-git-env.mjs", + "check-data": "node ./scripts/check-data-files.mjs", "dev": "npm run git-env && npm run check-data && astro dev", "dev:host": "npm run git-env && npm run check-data && astro dev --host", "start": "npm run git-env && npm run check-data && astro dev", @@ -24,6 +24,8 @@ "preview": "npm run git-env && astro preview", "preview:host": "npm run git-env && astro preview --host", "astro": "npm run git-env && astro", + "lint": "eslint . --max-warnings 0", + "format": "prettier -w --cache --plugin prettier-plugin-astro .", "linkcheck": "npm run git-env && npm run update:all && cross-env CHECK_LINKS=true astro build", "update:all": "npm run update:integrations && npm run update:github-stats", "update:integrations": "node ./scripts/update-integrations.js", @@ -67,6 +69,12 @@ "astro-embed": "^0.9.1", "astro-vtbot": "^2.1.9", "cross-env": "^10.1.0", - "node-fetch": "^3.3.2" + "node-fetch": "^3.3.2", + "@eslint/js": "^9.39.1", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.8", + "prettier": "^3.7.4", + "prettier-plugin-astro": "^0.14.1", + "typescript-eslint": "^8.48.1" } } diff --git a/src/frontend/public/site.webmanifest b/src/frontend/public/site.webmanifest index 61411296..e3082c07 100644 --- a/src/frontend/public/site.webmanifest +++ b/src/frontend/public/site.webmanifest @@ -18,4 +18,4 @@ "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" -} \ No newline at end of file +} diff --git a/src/frontend/scripts/check-data-files.cjs b/src/frontend/scripts/check-data-files.mjs similarity index 60% rename from src/frontend/scripts/check-data-files.cjs rename to src/frontend/scripts/check-data-files.mjs index 65cc2728..8965ecfa 100644 --- a/src/frontend/scripts/check-data-files.cjs +++ b/src/frontend/scripts/check-data-files.mjs @@ -3,31 +3,29 @@ * Safety check script to ensure required data files exist. * If data files are missing, runs the update:all script to generate them. */ -const { existsSync } = require('fs'); -const { join } = require('path'); -const { execSync } = require('child_process'); +import { existsSync } from 'fs'; +import { join } from 'path'; +import { execSync } from 'child_process'; -const REQUIRED_FILES = [ - './src/data/aspire-integrations.json', - './src/data/github-stats.json' -]; +const REQUIRED_FILES = ['./src/data/aspire-integrations.json', './src/data/github-stats.json']; function checkDataFiles() { - const missingFiles = REQUIRED_FILES.filter(file => { + const missingFiles = REQUIRED_FILES.filter((file) => { const fullPath = join(process.cwd(), file); return !existsSync(fullPath); }); if (missingFiles.length > 0) { console.log('⚠️ Missing required data files:'); - missingFiles.forEach(file => console.log(` - ${file}`)); + missingFiles.forEach((file) => console.log(` - ${file}`)); console.log('\n🔄 Running update:all to generate missing files...\n'); - + try { execSync('npm run update:all', { stdio: 'inherit' }); console.log('\n✅ Data files generated successfully'); } catch (error) { - console.error('\n❌ Failed to generate data files'); + const message = error instanceof Error ? error.message : 'Unknown error'; + console.error(`\n❌ Failed to generate data files: ${message}`); process.exit(1); } } else { diff --git a/src/frontend/scripts/update-github-stats.js b/src/frontend/scripts/update-github-stats.js index 455b49bc..ca887f36 100644 --- a/src/frontend/scripts/update-github-stats.js +++ b/src/frontend/scripts/update-github-stats.js @@ -2,60 +2,60 @@ import fs from 'fs'; import fetch from 'node-fetch'; const REPOS = [ - 'dotnet/aspire', - 'dotnet/aspire-samples', - 'CommunityToolkit/Aspire', - 'microsoft/aspire.dev' + 'dotnet/aspire', + 'dotnet/aspire-samples', + 'CommunityToolkit/Aspire', + 'microsoft/aspire.dev', ]; const OUTPUT_PATH = './src/data/github-stats.json'; async function fetchRepoStats(repo) { - const url = `https://api.github.com/repos/${repo}`; - const res = await fetch(url, { - headers: { 'User-Agent': 'aspire-stats-script' } - }); - if (!res.ok) throw new Error(`Failed to fetch ${repo}: ${res.statusText}`); - const data = await res.json(); - let licenseUrl = null; - if (data.license?.spdx_id) { - const base = `https://github.com/${repo}/blob/${data.default_branch}/`; - const licenseFiles = ['LICENSE', 'LICENSE.TXT', 'LICENSE.md', 'LICENSE.txt', 'LICENSE.md']; - for (const file of licenseFiles) { - // Try the raw URL to see if the license file exists - const fileUrl = `${base}${file}`; - const res = await fetch(fileUrl, { - method: 'HEAD', - headers: { 'User-Agent': 'aspire-stats-script' } - }); - if (res.ok) { - licenseUrl = fileUrl; - break; - } - } - // Fallback to generic license url if none found - if (!licenseUrl) { - licenseUrl = data.license?.url || null; - } - } else { - licenseUrl = data.license?.url || null; + const url = `https://api.github.com/repos/${repo}`; + const res = await fetch(url, { + headers: { 'User-Agent': 'aspire-stats-script' }, + }); + if (!res.ok) throw new Error(`Failed to fetch ${repo}: ${res.statusText}`); + const data = await res.json(); + let licenseUrl = null; + if (data.license?.spdx_id) { + const base = `https://github.com/${repo}/blob/${data.default_branch}/`; + const licenseFiles = ['LICENSE', 'LICENSE.TXT', 'LICENSE.md', 'LICENSE.txt', 'LICENSE.md']; + for (const file of licenseFiles) { + // Try the raw URL to see if the license file exists + const fileUrl = `${base}${file}`; + const res = await fetch(fileUrl, { + method: 'HEAD', + headers: { 'User-Agent': 'aspire-stats-script' }, + }); + if (res.ok) { + licenseUrl = fileUrl; + break; + } } + // Fallback to generic license url if none found + if (!licenseUrl) { + licenseUrl = data.license?.url || null; + } + } else { + licenseUrl = data.license?.url || null; + } - return { - name: data.full_name, - stars: data.stargazers_count, - description: data.description || null, - license: licenseUrl, - licenseName: data.license?.name || null, - repo: data.html_url - }; + return { + name: data.full_name, + stars: data.stargazers_count, + description: data.description || null, + license: licenseUrl, + licenseName: data.license?.name || null, + repo: data.html_url, + }; } async function fetchAllStats() { - const stats = await Promise.all(REPOS.map(fetchRepoStats)); - fs.writeFileSync(OUTPUT_PATH, JSON.stringify(stats, null, 2)); - console.log(`✅ Saved stats for ${stats.length} repos to ${OUTPUT_PATH}`); + const stats = await Promise.all(REPOS.map(fetchRepoStats)); + fs.writeFileSync(OUTPUT_PATH, JSON.stringify(stats, null, 2)); + console.log(`✅ Saved stats for ${stats.length} repos to ${OUTPUT_PATH}`); } -fetchAllStats().catch(err => { - console.error('❌ Failed to fetch GitHub stats', err); -}); \ No newline at end of file +fetchAllStats().catch((err) => { + console.error('❌ Failed to fetch GitHub stats', err); +}); diff --git a/src/frontend/scripts/update-integrations.js b/src/frontend/scripts/update-integrations.js index 57af6adb..7eb3bb7c 100644 --- a/src/frontend/scripts/update-integrations.js +++ b/src/frontend/scripts/update-integrations.js @@ -2,11 +2,7 @@ import fs from 'fs'; import fetch from 'node-fetch'; const SERVICE_INDEX = 'https://api.nuget.org/v3/index.json'; -const API_QUERIES = [ - 'owner:aspire', - 'Aspire.Hosting.', - 'CommunityToolkit.Aspire', -]; +const API_QUERIES = ['owner:aspire', 'Aspire.Hosting.', 'CommunityToolkit.Aspire']; const EXCLUDED_PACKAGES = [ 'Aspire.Cli', 'Aspire.Hosting', @@ -16,7 +12,7 @@ const EXCLUDED_PACKAGES = [ 'Aspire.MongoDB.Driver.v3', 'Aspire.RabbitMQ.Client.v7', 'CommunityToolkit.Aspire.Hosting.EventStore', - 'CommunityToolkit.Aspire.EventStore' + 'CommunityToolkit.Aspire.EventStore', ]; const OUTPUT_PATH = './src/data/aspire-integrations.json'; const OUTPUT_NAME_PATH = './src/data/aspire-integration-names.json'; @@ -30,9 +26,7 @@ const MAX_SKIP = 3000; async function discoverBase() { const res = await fetch(SERVICE_INDEX); const idx = await res.json(); - const svc = idx.resources.find(r => - r['@type']?.startsWith('SearchQueryService') - ); + const svc = idx.resources.find((r) => r['@type']?.startsWith('SearchQueryService')); if (!svc) throw new Error('SearchQueryService not in service index'); return svc['@id']; } @@ -40,19 +34,22 @@ async function discoverBase() { async function discoverRegistrationBase() { const res = await fetch(SERVICE_INDEX); const idx = await res.json(); - const regs = (idx.resources || []).filter(r => r['@type']?.startsWith('RegistrationsBaseUrl')); + const regs = (idx.resources || []).filter((r) => r['@type']?.startsWith('RegistrationsBaseUrl')); if (!regs.length) throw new Error('RegistrationsBaseUrl not in service index'); // Prefer semver2 gz endpoint for complete metadata const byPreference = [ - r => /registration5-gz-semver2/i.test(r['@id'] || ''), - r => /registration5-semver2/i.test(r['@id'] || ''), - r => /registration5-gz/i.test(r['@id'] || ''), - r => /registration5/i.test(r['@id'] || ''), + (r) => /registration5-gz-semver2/i.test(r['@id'] || ''), + (r) => /registration5-semver2/i.test(r['@id'] || ''), + (r) => /registration5-gz/i.test(r['@id'] || ''), + (r) => /registration5/i.test(r['@id'] || ''), ]; let chosen = regs[0]; for (const pred of byPreference) { const found = regs.find(pred); - if (found) { chosen = found; break; } + if (found) { + chosen = found; + break; + } } const id = chosen['@id']; return id.endsWith('/') ? id : id + '/'; @@ -76,7 +73,9 @@ async function fetchAllFromQuery(base, q) { if (skip >= MAX_SKIP) { console.warn(`⚠️ Skip reached limit (${skip} ≥ ${MAX_SKIP}), stopping page loop.`); if (total > skip + json.data.length) { - console.warn(`⚠️ Total hits (${total}) > retrieved (${skip + json.data.length}). Some packages may be missing.`); + console.warn( + `⚠️ Total hits (${total}) > retrieved (${skip + json.data.length}). Some packages may be missing.` + ); } break; } @@ -90,9 +89,9 @@ async function fetchAllFromQuery(base, q) { function filterAndTransform(pkgs) { return pkgs - .filter(pkg => { + .filter((pkg) => { const id = pkg.id.toLowerCase(); - const excludedLower = EXCLUDED_PACKAGES.map(p => p.toLowerCase()); + const excludedLower = EXCLUDED_PACKAGES.map((p) => p.toLowerCase()); return ( (id.startsWith('aspire.') || id.startsWith('communitytoolkit.aspire')) && pkg.verified === true && @@ -100,16 +99,15 @@ function filterAndTransform(pkgs) { pkg.deprecated !== true && !pkg.deprecation && !excludedLower.includes(id) && - !['x86','x64','arm64','projecttemplates','apphost'] - .some(t => id.includes(t)) + !['x86', 'x64', 'arm64', 'projecttemplates', 'apphost'].some((t) => id.includes(t)) ); }) - .map(pkg => ({ + .map((pkg) => ({ title: pkg.id, description: pkg.description, icon: pkg.iconUrl || 'https://www.nuget.org/Content/gallery/img/default-package-icon.svg', href: `https://www.nuget.org/packages/${pkg.id}`, - tags: pkg.tags?.map(t => t.toLowerCase()) ?? [], + tags: pkg.tags?.map((t) => t.toLowerCase()) ?? [], downloads: pkg.totalDownloads, version: pkg.version, })); @@ -119,7 +117,7 @@ async function filterOutDeprecatedWithRegistration(pkgs) { const regBase = await discoverRegistrationBase(); console.log('🔗 Registration base:', regBase); // Light pre-filter in case search already flags deprecated - const prefiltered = pkgs.filter(p => p.deprecated !== true && !p.deprecation); + const prefiltered = pkgs.filter((p) => p.deprecated !== true && !p.deprecation); const concurrency = 10; const out = []; @@ -128,7 +126,7 @@ async function filterOutDeprecatedWithRegistration(pkgs) { while (i < prefiltered.length) { const idx = i++; const p = prefiltered[idx]; - const preferred = await getPreferredNonDeprecatedVersion(regBase, p.id); + const preferred = await getPreferredNonDeprecatedVersion(regBase, p.id); if (preferred) { out.push({ ...p, version: preferred }); } @@ -141,10 +139,13 @@ async function filterOutDeprecatedWithRegistration(pkgs) { function parseSemVer(v) { // Strip build metadata - const [core, ] = v.split('+', 1).concat(''); + const [core] = v.split('+', 1).concat(''); const [nums, pre = ''] = core.split('-', 2).concat(''); - const [maj, min, pat] = nums.split('.').map(x => parseInt(x, 10) || 0); - const preParts = pre === '' ? [] : pre.split('.').map(x => (x.match(/^\d+$/) ? { n: parseInt(x, 10) } : { s: x })); + const [maj, min, pat] = nums.split('.').map((x) => parseInt(x, 10) || 0); + const preParts = + pre === '' + ? [] + : pre.split('.').map((x) => (x.match(/^\d+$/) ? { n: parseInt(x, 10) } : { s: x })); return { maj, min, pat, pre: preParts }; } @@ -204,7 +205,7 @@ async function getAllRegistrationLeaves(regBase, id) { const ce = leaf.catalogEntry || {}; const version = (ce.version || leaf.version || '').trim(); if (!version) continue; - const isPrerelease = !!(ce.isPrerelease ?? (version.includes('-'))); + const isPrerelease = !!(ce.isPrerelease ?? version.includes('-')); const listed = ce.listed !== false; // default true if missing const deprecated = !!(leaf.deprecation || ce.deprecation); leaves.push({ version, isPrerelease, listed, deprecated }); @@ -226,19 +227,19 @@ async function getAllRegistrationLeaves(regBase, id) { async function getPreferredNonDeprecatedVersion(regBase, id) { try { - const leaves = await getAllRegistrationLeaves(regBase, id); + const leaves = await getAllRegistrationLeaves(regBase, id); if (leaves.length === 0) return null; // Prefer listed versions - const listed = leaves.filter(l => l.listed); + const listed = leaves.filter((l) => l.listed); const pool = listed.length > 0 ? listed : leaves; - const nonDeprecated = pool.filter(l => !l.deprecated); - if (nonDeprecated.length === 0) return null; - const hasAnyStable = pool.some(l => !l.isPrerelease); - const nonDeprecatedStable = nonDeprecated.filter(l => !l.isPrerelease); - // If the package has any stable releases but none are non-deprecated, treat the package as deprecated overall - if (hasAnyStable && nonDeprecatedStable.length === 0) return null; - // Otherwise, prefer stable non-deprecated; if no stable releases exist at all, allow prerelease - const pickFrom = nonDeprecatedStable.length > 0 ? nonDeprecatedStable : nonDeprecated; + const nonDeprecated = pool.filter((l) => !l.deprecated); + if (nonDeprecated.length === 0) return null; + const hasAnyStable = pool.some((l) => !l.isPrerelease); + const nonDeprecatedStable = nonDeprecated.filter((l) => !l.isPrerelease); + // If the package has any stable releases but none are non-deprecated, treat the package as deprecated overall + if (hasAnyStable && nonDeprecatedStable.length === 0) return null; + // Otherwise, prefer stable non-deprecated; if no stable releases exist at all, allow prerelease + const pickFrom = nonDeprecatedStable.length > 0 ? nonDeprecatedStable : nonDeprecated; // Pick highest per SemVer pickFrom.sort((a, b) => cmpSemVer(a.version, b.version)); return pickFrom[pickFrom.length - 1].version; @@ -253,17 +254,24 @@ async function getPreferredNonDeprecatedVersion(regBase, id) { const base = await discoverBase(); console.log('🔗 Using:', base); - const results = await Promise.all(API_QUERIES.map(q => fetchAllFromQuery(base, q))); - const merged = results.flat(); - const unique = Object.values( - merged.reduce((acc, pkg) => (acc[pkg.id] = pkg, acc), {}) - ).sort((a,b) => a.id.localeCompare(b.id)); + const results = await Promise.all(API_QUERIES.map((q) => fetchAllFromQuery(base, q))); + const merged = results.flat(); + const unique = Object.values(merged.reduce((acc, pkg) => ((acc[pkg.id] = pkg), acc), {})).sort( + (a, b) => a.id.localeCompare(b.id) + ); - // Exclude deprecated packages using registration metadata - const nonDeprecated = await filterOutDeprecatedWithRegistration(unique); - const output = filterAndTransform(nonDeprecated); + // Exclude deprecated packages using registration metadata + const nonDeprecated = await filterOutDeprecatedWithRegistration(unique); + const output = filterAndTransform(nonDeprecated); fs.writeFileSync(OUTPUT_PATH, JSON.stringify(output, null, 2)); - fs.writeFileSync(OUTPUT_NAME_PATH, JSON.stringify(output.map(p => p.title), null, 2)); + fs.writeFileSync( + OUTPUT_NAME_PATH, + JSON.stringify( + output.map((p) => p.title), + null, + 2 + ) + ); console.log(`✅ Saved ${output.length} packages to ${OUTPUT_PATH}`); } catch (err) { console.error('❌ Error:', err); diff --git a/src/frontend/scripts/update-posts.js b/src/frontend/scripts/update-posts.js index 632298a9..b80789b9 100644 --- a/src/frontend/scripts/update-posts.js +++ b/src/frontend/scripts/update-posts.js @@ -12,43 +12,155 @@ const SINCE_DATE = '2023-11-14T00:00:00Z'; const MAX_POSTS = 500; const EXCLUDED_HANDLES = new Set([ - 'antz-junction.bsky.social', 'prevention-collaborative.org', 'aspire-cop.bsky.social', - 'blackrose-deguerre.bsky.social', 'neowin.net', 'new3rd.bsky.social', 'columbiaem.bsky.social', - 'um-ypl.bsky.social', 'frankschloegel.bsky.social', 'randomquotes.bsky.social', 'thedailyquotes.bsky.social', - 'lebotdelachatte.bsky.social', 'ceesslob.bsky.social', 'irbbarcelona.org', 'londontlife.bsky.social', - 'kerryreynoldsmd.bsky.social', 'darkpoint.bsky.social', 'finland.activitypub.awakari.com.ap.brid.gy', - 'oldperl.mastodon.online.ap.brid.gy', 'oncodaily.bsky.social', 'warrensmitchell.bsky.social', - 'luminousreflect.bsky.social', 'newsen.bsky.social', 'izumicat1.bsky.social', 'blesspat.bsky.social', - 'edchoicesmag.bsky.social', 'lncstrlgnd.bsky.social' + 'antz-junction.bsky.social', + 'prevention-collaborative.org', + 'aspire-cop.bsky.social', + 'blackrose-deguerre.bsky.social', + 'neowin.net', + 'new3rd.bsky.social', + 'columbiaem.bsky.social', + 'um-ypl.bsky.social', + 'frankschloegel.bsky.social', + 'randomquotes.bsky.social', + 'thedailyquotes.bsky.social', + 'lebotdelachatte.bsky.social', + 'ceesslob.bsky.social', + 'irbbarcelona.org', + 'londontlife.bsky.social', + 'kerryreynoldsmd.bsky.social', + 'darkpoint.bsky.social', + 'finland.activitypub.awakari.com.ap.brid.gy', + 'oldperl.mastodon.online.ap.brid.gy', + 'oncodaily.bsky.social', + 'warrensmitchell.bsky.social', + 'luminousreflect.bsky.social', + 'newsen.bsky.social', + 'izumicat1.bsky.social', + 'blesspat.bsky.social', + 'edchoicesmag.bsky.social', + 'lncstrlgnd.bsky.social', ]); const INCLUDE_TAGS = new Set([ - 'llm', 'rag', 'aspire', 'dotnet', 'build', 'dapr', 'cloudnative', 'cloud', - 'dotnetaspire', 'yarp', 'aspnet', 'microservice', 'kubernetes', 'k8s', - 'blazor', 'ollama', 'ai', 'semantickernel', 'cosmos', 'db', 'fsharp', - 'azure', 'aws', 'community', 'dev', 'openai', 'scalar', 'csharp', 'maui', - 'dotnetmaui', 'docker', 'oss' + 'llm', + 'rag', + 'aspire', + 'dotnet', + 'build', + 'dapr', + 'cloudnative', + 'cloud', + 'dotnetaspire', + 'yarp', + 'aspnet', + 'microservice', + 'kubernetes', + 'k8s', + 'blazor', + 'ollama', + 'ai', + 'semantickernel', + 'cosmos', + 'db', + 'fsharp', + 'azure', + 'aws', + 'community', + 'dev', + 'openai', + 'scalar', + 'csharp', + 'maui', + 'dotnetmaui', + 'docker', + 'oss', ]); const EXCLUDE_TAGS = new Set([ - 'whiteycorporations', 'exploit', 'allhumans', 'communities', 'all', 'welcome', - 'audhd', 'dnd', 'writing', 'fanfic', 'origin', 'bloodhunter', 'dragonborn', 'acer', - 'originstory', 'bg3', 'inspired', 'darkfantasy', 'fantasy', 'suzydaviesbooks', 'iraes', - 'housiemousieseries', 'poopthedragon', 'readers', 'books', 'gifts', 'absorb', 'helpingcitizens', - 'specialoccasions', 'celebrations', 'birthdays', 'fathersday', 'raiseareader', 'streetart', - 'inspire', 'wellbeing', 'rolemodels', 'positivevibesonly', 'spelman', 'attire', 'penge', - 'morehouse', 'youthpolicylab', 'freeschoolmeals', 'poverty', 'childpoverty', 'idnont', - 'schoolfunding', 'labour', 'redtories', 'capitalism', 'towerhamlets', 'jpr', 'justice', - 'welfarenotwarfare', 'newparty', 'newworkersparty', 'tusc', 'achieve', 'isr', 'flowers', - 'tradeunionistandsocialistcoalition', 'peoplebeforeprofit', 'socialism', 'socialist', - 'youngpeople', 'manchester', 'manchesterrisingstarsfund', 'findoutmore', 'irresistible', - 'support', 'entrepreneurship', 'youngachievers', 'meghansussex', 'sussexsquad', 'oncsky' + 'whiteycorporations', + 'exploit', + 'allhumans', + 'communities', + 'all', + 'welcome', + 'audhd', + 'dnd', + 'writing', + 'fanfic', + 'origin', + 'bloodhunter', + 'dragonborn', + 'acer', + 'originstory', + 'bg3', + 'inspired', + 'darkfantasy', + 'fantasy', + 'suzydaviesbooks', + 'iraes', + 'housiemousieseries', + 'poopthedragon', + 'readers', + 'books', + 'gifts', + 'absorb', + 'helpingcitizens', + 'specialoccasions', + 'celebrations', + 'birthdays', + 'fathersday', + 'raiseareader', + 'streetart', + 'inspire', + 'wellbeing', + 'rolemodels', + 'positivevibesonly', + 'spelman', + 'attire', + 'penge', + 'morehouse', + 'youthpolicylab', + 'freeschoolmeals', + 'poverty', + 'childpoverty', + 'idnont', + 'schoolfunding', + 'labour', + 'redtories', + 'capitalism', + 'towerhamlets', + 'jpr', + 'justice', + 'welfarenotwarfare', + 'newparty', + 'newworkersparty', + 'tusc', + 'achieve', + 'isr', + 'flowers', + 'tradeunionistandsocialistcoalition', + 'peoplebeforeprofit', + 'socialism', + 'socialist', + 'youngpeople', + 'manchester', + 'manchesterrisingstarsfund', + 'findoutmore', + 'irresistible', + 'support', + 'entrepreneurship', + 'youngachievers', + 'meghansussex', + 'sussexsquad', + 'oncsky', ]); function extractTagsFromText(text) { const matches = text.match(/#\w+/g); - return matches - ? Array.from(new Set(matches.map(tag => tag.slice(1).toLowerCase()))).sort((a, b) => a.localeCompare(b)) + return matches + ? Array.from(new Set(matches.map((tag) => tag.slice(1).toLowerCase()))).sort((a, b) => + a.localeCompare(b) + ) : []; } @@ -71,10 +183,11 @@ function shouldIncludePost(post) { if (createdAt < minDate) return false; // Check both normalized (with domain) and bare handle against the excluded list const bare = author ? author.split('.')[0] : ''; - if ((author && EXCLUDED_HANDLES.has(author)) || (bare && EXCLUDED_HANDLES.has(bare))) return false; + if ((author && EXCLUDED_HANDLES.has(author)) || (bare && EXCLUDED_HANDLES.has(bare))) + return false; - const hasIncluded = tags.some(t => INCLUDE_TAGS.has(t)); - const hasExcluded = tags.some(t => EXCLUDE_TAGS.has(t)); + const hasIncluded = tags.some((t) => INCLUDE_TAGS.has(t)); + const hasExcluded = tags.some((t) => EXCLUDE_TAGS.has(t)); return hasIncluded && !hasExcluded; } @@ -85,8 +198,8 @@ async function loginToBluesky() { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ identifier: BSKY_IDENTIFIER, - password: BSKY_APP_PASSWORD - }) + password: BSKY_APP_PASSWORD, + }), }); if (!res.ok) { @@ -106,7 +219,7 @@ async function fetchAspirePosts(accessToken, cursor = null, collected = []) { if (cursor) url.searchParams.set('cursor', cursor); const res = await fetch(url.href, { - headers: { Authorization: `Bearer ${accessToken}` } + headers: { Authorization: `Bearer ${accessToken}` }, }); if (!res.ok) { @@ -182,7 +295,7 @@ async function updateAspirePosts() { await savePosts(all); } -updateAspirePosts().catch(err => { +updateAspirePosts().catch((err) => { console.error('❌ Error updating aspire posts:', err); process.exit(1); }); diff --git a/src/frontend/scripts/write-git-env.cjs b/src/frontend/scripts/write-git-env.mjs similarity index 58% rename from src/frontend/scripts/write-git-env.cjs rename to src/frontend/scripts/write-git-env.mjs index c246dc92..1364a990 100644 --- a/src/frontend/scripts/write-git-env.cjs +++ b/src/frontend/scripts/write-git-env.mjs @@ -3,9 +3,14 @@ * Writes current git commit and repo URL into a .env.local file so Astro (Vite) exposes them. * PUBLIC_ prefix ensures they are available in client code. */ -const { execSync } = require('child_process'); -const { writeFileSync, existsSync } = require('fs'); -const { join } = require('path'); +import { execSync } from 'child_process'; +import { writeFileSync, existsSync, readFileSync } from 'fs'; +import { join } from 'path'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); function getCommit() { try { @@ -17,29 +22,29 @@ function getCommit() { function getRepoUrl() { try { - const pkg = require('../package.json'); + const pkgPath = join(__dirname, '../package.json'); + const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')); if (pkg.repository) { - if (typeof pkg.repository === 'string') return pkg.repository.replace(/^git\+/, '').replace(/\.git$/, ''); - if (pkg.repository.url) return pkg.repository.url.replace(/^git\+/, '').replace(/\.git$/, ''); + if (typeof pkg.repository === 'string') + return pkg.repository.replace(/^git\+/, '').replace(/\.git$/, ''); + if (typeof pkg.repository === 'object' && pkg.repository.url) + return pkg.repository.url.replace(/^git\+/, '').replace(/\.git$/, ''); } - } catch { } + } catch {} return 'https://github.com/microsoft/aspire.dev'; } const commit = getCommit(); const repo = getRepoUrl().replace(/\/$/, ''); -const lines = [ - `PUBLIC_GIT_COMMIT_ID=${commit}`, - `PUBLIC_REPO_URL=${repo}`, -]; +const lines = [`PUBLIC_GIT_COMMIT_ID=${commit}`, `PUBLIC_REPO_URL=${repo}`]; const envPath = join(process.cwd(), '.env.local'); let updated = false; let content = ''; if (existsSync(envPath)) { - content = require('fs').readFileSync(envPath, 'utf8'); - lines.forEach(line => { + content = readFileSync(envPath, 'utf8'); + lines.forEach((line) => { const [key] = line.split('='); const regex = new RegExp(`^${key}=.*$`, 'm'); if (regex.test(content)) { diff --git a/src/frontend/src/components/PivotSelector.astro b/src/frontend/src/components/PivotSelector.astro index be672899..346707e8 100644 --- a/src/frontend/src/components/PivotSelector.astro +++ b/src/frontend/src/components/PivotSelector.astro @@ -1,698 +1,732 @@ --- interface Option { - id: string; - title: string; - disabled?: boolean; + id: string; + title: string; + disabled?: boolean; } type Props = { - options: Option[]; - key: string; - title?: string; + options: Option[]; + key: string; + title?: string; }; const { options, key, title } = Astro.props; ---
- {title &&
{title}
} -
- { - options.map((o) => ( - - )) - } -
- - + {title &&
{title}
} +
+ { + options.map((o) => ( + + )) + } +
+ +
diff --git a/src/frontend/src/content.config.ts b/src/frontend/src/content.config.ts index 1559e2f5..55adeb07 100644 --- a/src/frontend/src/content.config.ts +++ b/src/frontend/src/content.config.ts @@ -3,27 +3,21 @@ import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { - docs: defineCollection({ - loader: docsLoader(), - schema: docsSchema( - { - extend: ({ image }) => z.object({ - renderBlocking: z.string().optional(), - giscus: z.boolean().optional().default(false), - category: z.enum([ - 'conceptual', - 'quickstart', - 'tutorial', - 'blog', - 'reference', - 'sample' - ]).optional(), - }) - } - ) - }), - i18n: defineCollection({ - loader: i18nLoader(), - schema: i18nSchema(), - }), + docs: defineCollection({ + loader: docsLoader(), + schema: docsSchema({ + extend: () => + z.object({ + renderBlocking: z.string().optional(), + giscus: z.boolean().optional().default(false), + category: z + .enum(['conceptual', 'quickstart', 'tutorial', 'blog', 'reference', 'sample']) + .optional(), + }), + }), + }), + i18n: defineCollection({ + loader: i18nLoader(), + schema: i18nSchema(), + }), }; diff --git a/src/frontend/src/content/i18n/da.json b/src/frontend/src/content/i18n/da.json index cc4ed12a..8186f687 100644 --- a/src/frontend/src/content/i18n/da.json +++ b/src/frontend/src/content/i18n/da.json @@ -96,4 +96,4 @@ "accessibleLabel": "Vælg tastaturtype" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/de.json b/src/frontend/src/content/i18n/de.json index 15eb5259..f5811b32 100644 --- a/src/frontend/src/content/i18n/de.json +++ b/src/frontend/src/content/i18n/de.json @@ -96,4 +96,4 @@ "accessibleLabel": "Tastaturtyp auswählen" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/en.json b/src/frontend/src/content/i18n/en.json index 8fd59a6a..107fbcf2 100644 --- a/src/frontend/src/content/i18n/en.json +++ b/src/frontend/src/content/i18n/en.json @@ -11,7 +11,7 @@ "prodText": "Production cloud services—zero code changes" } }, - "github":{ + "github": { "stars": "Stars {{stars}}", "repo": "Repository" }, @@ -96,4 +96,4 @@ "accessibleLabel": "Select keyboard type" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/es.json b/src/frontend/src/content/i18n/es.json index 73bc7f23..7d1755de 100644 --- a/src/frontend/src/content/i18n/es.json +++ b/src/frontend/src/content/i18n/es.json @@ -96,4 +96,4 @@ "accessibleLabel": "Selecciona el tipo de teclado" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/fr.json b/src/frontend/src/content/i18n/fr.json index dd9bba82..fadec3d4 100644 --- a/src/frontend/src/content/i18n/fr.json +++ b/src/frontend/src/content/i18n/fr.json @@ -96,4 +96,4 @@ "accessibleLabel": "Sélectionner le type de clavier" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/hi.json b/src/frontend/src/content/i18n/hi.json index 439a9086..03d108df 100644 --- a/src/frontend/src/content/i18n/hi.json +++ b/src/frontend/src/content/i18n/hi.json @@ -96,4 +96,4 @@ "accessibleLabel": "कीबोर्ड प्रकार चुनें" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/id.json b/src/frontend/src/content/i18n/id.json index 30a7522d..054180b4 100644 --- a/src/frontend/src/content/i18n/id.json +++ b/src/frontend/src/content/i18n/id.json @@ -96,4 +96,4 @@ "accessibleLabel": "Pilih tipe keyboard" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/it.json b/src/frontend/src/content/i18n/it.json index 02b3cc89..e76cb067 100644 --- a/src/frontend/src/content/i18n/it.json +++ b/src/frontend/src/content/i18n/it.json @@ -96,4 +96,4 @@ "accessibleLabel": "Seleziona tipo di tastiera" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/ja.json b/src/frontend/src/content/i18n/ja.json index a70bfaac..4d3cd475 100644 --- a/src/frontend/src/content/i18n/ja.json +++ b/src/frontend/src/content/i18n/ja.json @@ -96,4 +96,4 @@ "accessibleLabel": "キーボードタイプを選択" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/ko.json b/src/frontend/src/content/i18n/ko.json index 0253390d..2a613e80 100644 --- a/src/frontend/src/content/i18n/ko.json +++ b/src/frontend/src/content/i18n/ko.json @@ -96,4 +96,4 @@ "accessibleLabel": "키보드 유형 선택" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/pt-BR.json b/src/frontend/src/content/i18n/pt-BR.json index ce001d95..37323a00 100644 --- a/src/frontend/src/content/i18n/pt-BR.json +++ b/src/frontend/src/content/i18n/pt-BR.json @@ -96,4 +96,4 @@ "accessibleLabel": "Selecionar tipo de teclado" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/pt-PT.json b/src/frontend/src/content/i18n/pt-PT.json index cf828061..c8c55e60 100644 --- a/src/frontend/src/content/i18n/pt-PT.json +++ b/src/frontend/src/content/i18n/pt-PT.json @@ -96,4 +96,4 @@ "accessibleLabel": "Selecionar tipo de teclado" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/ru.json b/src/frontend/src/content/i18n/ru.json index eb7eed7e..60fcfb83 100644 --- a/src/frontend/src/content/i18n/ru.json +++ b/src/frontend/src/content/i18n/ru.json @@ -96,4 +96,4 @@ "accessibleLabel": "Выберите тип клавиатуры" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/tr.json b/src/frontend/src/content/i18n/tr.json index dec57d1f..eafe5800 100644 --- a/src/frontend/src/content/i18n/tr.json +++ b/src/frontend/src/content/i18n/tr.json @@ -96,4 +96,4 @@ "accessibleLabel": "Klavye türünü seç" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/uk.json b/src/frontend/src/content/i18n/uk.json index 51623e24..db77f79a 100644 --- a/src/frontend/src/content/i18n/uk.json +++ b/src/frontend/src/content/i18n/uk.json @@ -96,4 +96,4 @@ "accessibleLabel": "Виберіть тип клавіатури" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/content/i18n/zh-CN.json b/src/frontend/src/content/i18n/zh-CN.json index 0588ed50..1f04dbe2 100644 --- a/src/frontend/src/content/i18n/zh-CN.json +++ b/src/frontend/src/content/i18n/zh-CN.json @@ -96,4 +96,4 @@ "accessibleLabel": "选择键盘类型" } } -} \ No newline at end of file +} diff --git a/src/frontend/src/data/aspire-posts.json b/src/frontend/src/data/aspire-posts.json index 7995c921..1486ae7f 100644 --- a/src/frontend/src/data/aspire-posts.json +++ b/src/frontend/src/data/aspire-posts.json @@ -179,9 +179,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "New swag alert \n\nwww.bonfire.com/aspire-side-...\n\n#aspire" }, "embed": { @@ -421,9 +419,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Trying out @captainsafia.com 's 11030 PR into #aspire and I'm like" }, "embed": { @@ -513,9 +509,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#aspire" }, "embed": { @@ -598,9 +592,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire is at version 9.4.1 now. That's the only supported version. If you're using an older version, update now. You must update to the latest version to be in support & get the awesome new features. What are you waiting for?\nlearn.microsoft.com/dotnet/aspir...\n#dotnet" }, "labels": [], @@ -1079,9 +1071,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The Aspire team is cooking up a new (All) option for the console logs page.\n\nWant everything at once? (All) gives you all resource logs in one view 🚀\n\n#dotnet #aspire" }, "embed": { @@ -1187,9 +1177,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Yes, that's just becoming better and better. The new cli is something really handy, even mandatory for a concept such as this one.\n\ndevblogs.microsoft.com/dotnet/annou...\n\n#dotnet #aspire" }, "embed": { @@ -1292,9 +1280,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "not @mitchdenny.dev dropping a 22 min read blog post over the weekend about multi-env situations with #aspire lol absolute MENACE www.withaspire.dev/p/ea243557-e..." }, "embed": { @@ -1579,9 +1565,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Put a📌on this one. This is the next big #Blazor #OpenSource project I will be working on in September on BlazorData.net using #Aspire of course 👍🏽" }, "embed": { @@ -1698,9 +1682,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "to the recent discussion with Maddy about .NET Aspire. In Maddy's words, Aspire is like the green baseplate you get with Lego sets, but it's actually more than that. Tune in to find out what Aspire is all about! #Dotnet #Aspire #TechTalk\n\ndotnetcore.show/season-7/net..." }, "embed": { @@ -1989,9 +1971,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "WSL + Docker + Aspire = smooth .NET cloud-native dev on Windows. Sharing how I set it up and why it’s made local development way easier.\n\naalmada.github.io/posts/A-Guid...\n\n#dotnet #aspire #WSL #devsetup" }, "embed": { @@ -2075,9 +2055,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The #dotnet #aspire team on #AspiriFridays: \"Global installs bad!\"\n\nAlso the dotnet aspire team: dotnet tool install -g Aspire.Cli\n(I'm ignoring the \"install.ps1\" version)\n\n🤔\n\nI appreciate that this is a difficult problem, and at some point something has to bootstrap something, but..." }, "replyCount": 0, @@ -2195,9 +2173,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Looking for something to read, or listen to catch-up after your summer break? c5m.ca/RN-660 This week's #ReadingNotes cover GenAI vs agentic #AI 🧠, fresh #Docker and #Aspire news ,🐳 how to run WordPress in containers, and building apps with React and .NET. Plus a few podcasts worth a listen 🎧" }, "embed": { @@ -2426,9 +2402,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The previous week was quite productive. A bunch of fixes and improvements for our #aspire plugin for Rider\n\n#perasperaadastra" }, "embed": { @@ -2573,9 +2547,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Introducing Technical Debt Master: AI-Powered Code Analysis with Local LLMs\"\n\nnikiforovall.blog/ai/2025/08/0...\n\nAI-based CLI tool that automates technical debt discovery, triage, and resolution.\n\n#ai #agents #mcp #aspire #cli" }, "embed": { @@ -2685,9 +2657,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "💥 Tired of fragile magic strings in your .NET Aspire projects? Check out my latest blog post where I walk you through how to remove them using shared constants for more maintainable code!\n\nLearn more 👉 www.michaelscollier.com/aspire-secr...\n\n#dotnet #Aspire #CSharp" }, "embed": { @@ -2942,9 +2912,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Time to test the limits of GPT-5! 🚀\nBuilding a next-gen eShopLite search with NLWeb, .NET 9, and Aspire 9.4 orchestration. \nCan Copilot handle this one? 🤔\n#dotnet #GPT5 #NLWeb #Aspire #AI #eShopLite" }, "embed": { @@ -3054,9 +3022,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire Roadmap 2025: Code-first DevOps, polyglot, and AI by @victorfrye.com\n\nvictorfrye.com/blog/posts/a...\n\n#aspire" }, "embed": { @@ -3308,9 +3274,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 It’s here! Our book on .NET Aspire is officially out!\nDive into what Aspire is and how it helps you build cloud-native apps with ease.\n\nBig thanks to @maddymontaquila.net for the amazing foreword 💙\nIt’s been a ride — hope you enjoy it!\nbpbonline.com/products/int...\n\n#dotnet #aspire #cloudnative" }, "embed": { @@ -3717,9 +3681,7 @@ } } ], - "tags": [ - "Aspire" - ], + "tags": ["Aspire"], "text": ".NET Aspire 9.4 Released with CLI GA, Interactive Dashboards, and Advanced Deployment Features .NET Aspire 9.4 has been released as the latest minor version of the cloud-native application developm...\n\n#.NET #9 #Cloud #Native #Architecture #.NET #10 #.NET #.NET […] \n\n[Original post on infoq.com]" }, "embed": { @@ -3879,9 +3841,7 @@ } } ], - "tags": [ - "Aspire" - ], + "tags": ["Aspire"], "text": ".NET Aspire 9.4 Released with CLI GA, Interactive Dashboards, and Advanced Deployment Features .NET Aspire 9.4 has been released as the latest minor version of the cloud-native application developm...\n\n#Cloud #Native #Architecture #.NET #10 #.NET #9 #.NET #.NET […] \n\n[Original post on infoq.com]" }, "embed": { @@ -4544,9 +4504,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: Issuer and verify credentials using the Swiss Digital identity public beta, ASP.NET Core and .NET Aspire\n\ndamienbod.com/2025/08/04/i...\n\n#aspire #aspnetcore #dotnet #swiyu #e-ID #eid #identity #iam #openid #sd-jwt-vc #vc #did #ssi #OID4VCI #OID4VP" }, "embed": { @@ -5175,9 +5133,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I *just* started a #dotnet #aspire based experiment and have as Nuget dependencies:\n\n12 direct, 90 indirect ones.\n\nIf I hear one more joke about the #npm ecosystem from #dotnet folks, you deserve a batman-like slap." }, "embed": { @@ -5279,9 +5235,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.4 is here with a CLI and interactive dashboard features - .NET Blog devblogs.microsoft.com/dotnet/annou... #Aspire" }, "embed": { @@ -5385,9 +5339,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspirifridays is back tomorrow!\n\nwww.youtube.com/live/Js06lpu...\n\n#dotnet #aspire" }, "embed": { @@ -5667,9 +5619,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "✍️ Blogged: Fire your Playwright tests on demand from the .NET Aspire dashboard\n\ntimdeschryver.dev/blog/fire-yo...\n\n#dotNET #Aspire #Playwright" }, "embed": { @@ -5893,9 +5843,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The aspire discord shot up to 435 members in 2 days 🤯 \n\naka.ms/aspire-discord\n\n#aspire" }, "embed": { @@ -6158,9 +6106,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "This #Aspire tutorial is what you are looking to start with your #dotnet backend and #react front end.\n\ndevblogs.microsoft.com/dotnet/new-a..." }, "embed": { @@ -6260,9 +6206,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.4 is out with lots of new features! The new interaction service looks really nice 🤩 Also being able to add the dashboard to Docker Compose environments looks promising for local observability on edge.\n\nlearn.microsoft.com/en-us/dotnet...\n\n#aspire #dotnet" }, "embed": { @@ -6323,9 +6267,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I was looking to do something w/ Aspire tonight & couldn’t figure it out. A few related old issues in the GitHub repo, but nothing solid. Decided to have a look at the NEW Aspire Discord, and boom, noticed 9.4 just dropped and seems to have the feature I was looking for! #Aspire" }, "replyCount": 0, @@ -6392,9 +6334,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Are there any examples of worker services with #dotnet #aspire? I’m hoping to run the worker service multiple times thru the dashboard with different runtime or configuration parameters. I have a modular monolith worker service so the parameters completely change the behavior." }, "replyCount": 2, @@ -6501,9 +6441,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🎉 A new version of Aspire just shipped, 9.4 and it's one of the biggest releases yet. Very proud of what the team was able to accomplish.\n\n📣 Blog post - devblogs.microsoft.com/dotnet/annou...\n\n📝 What's new - learn.microsoft.com/en-us/dotnet...\n\n#dotnet #aspire" }, "embed": { @@ -6789,9 +6727,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#Aspire: A Modern DevOps Toolchain by: @davidfowl.com #Blazor medium.com/@davidfowl/a..." }, "embed": { @@ -6900,9 +6836,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire: A Modern DevOps Toolchain\n\nmedium.com/@davidfowl/a...\n\n#aspire #dotnet" }, "embed": { @@ -6974,9 +6908,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "For me, one of the biggest novelties of #dotnet #aspire was that the application could know the IDE existed. Not just an IDE running some abstract code, but they collaborate with each other. I imagine this could lead to some very interesting scenarios" }, "replyCount": 0, @@ -7075,9 +7007,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Is it possible for #dotnet #aspire cosmos db emulator to set a ttl. I would have expected something like:\n \n var c = cosmosDbDatabase.AddContainer();\n c.WithDefaultTtl(600);\n\nAm I running to a roadblock almost immediately.\nThis indicates that it's not possible yet?\n\ngithub.com/dotnet/aspir..." }, "embed": { @@ -7179,9 +7109,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreicmgwv6srwgavjjpn5f3mj5ccgsofsboospdwpw6scelkxmrxxhve", @@ -7295,9 +7223,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "This is a picture of #Aspire running in a GitHub Codespace with an ubuntu-based container exposing a port-forwarded desktop via noVNC in which I've installed #Aspire and launched another apphost - #Aspire inception:" }, "embed": { @@ -7539,9 +7465,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "New OSS project: Basic setup to issuer and verify swiyu credentials using the swiyu public beta, ASP.NET Core and Aspire.\n\ngithub.com/swiss-ssi-gr...\n\n#aspire #aspnetcore #dotnet #swiyu #e-ID #eid #identity #iam #openid #sd-jwt-vc #vc #did #ssi" }, "embed": { @@ -7640,9 +7564,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We have a new discord aka.ms/aspire-discord\n\n#aspire" }, "embed": { @@ -7738,9 +7660,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire is growing up.\n\nBetter local dev workflows.\nTesting you can see.\nPolyglot by default.\nA clearer path to deployment.\nWe just published the roadmap—come take a look:\n\n👉 github.com/dotnet/aspir...\n\n#aspire #dotnet" }, "labels": [], @@ -7990,9 +7910,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "A huge congratulations to our Aspire's Got Talent joint 1st place winners:\n✨️Claire who sang, and signed 'I Have A Dream' by Abba.\n✨️Chris with a theatrical rendition of 'Any Dream Will Do'.\n\n#abilitiesnotdisabilities #aspiregottalent #aspire #inclusionmatters" }, "embed": { @@ -8213,9 +8131,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Just added two actions to our @jetbrains-rider.bsky.social plugin to generate #aspire projects in one click. It's now very quick and easy to add .NET Aspire to an existing project and give it a go" }, "embed": { @@ -8466,9 +8382,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreihun7c5ffl4mj3nujpcmowdg5fdvc4bhxb2klcmbubjbw36yrrezu", @@ -8573,9 +8487,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire is growing up.\n\nBetter local dev workflows.\nTesting you can see.\nPolyglot by default.\nA clearer path to deployment.\nWe just published the roadmap—come take a look:\n\n👉 github.com/dotnet/aspir...\n\n#aspire #dotnet" }, "embed": { @@ -8723,9 +8635,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "For those of you that use the #Structurizr DSL for publishing your #C4 Architecture diagrams and would like to use #dotnetaspire to add them to your AppHost. Then I have a NuGet package for you:\n\nwww.nuget.org/packages/Str...\n\n#dotnet #aspire #nuget" }, "embed": { @@ -9149,9 +9059,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "New Blog Post: (07/19/2025): \"Aspire Dashboard.\" RPs and feedback are always appreciated! jjg.me/3Iwcj6l #Articles #Aspire #.NET #dotnet #Development #ASP.NET #Containers" }, "embed": { @@ -9388,9 +9296,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiblta7wh6qsgr45eiwh37xa3vhadffmmo365bs6y5sruv4mrc7cwe", @@ -9464,9 +9370,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiblipl5byhlz7fjtbdfccl2fwnfhlhn5pyha7oditirwxbpwh2afi", @@ -9540,9 +9444,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreic7gexptq2ue3ciqevo2cbsgdcmtz4mgtthaxfwhjiocmfz2pp3bu", @@ -9792,9 +9694,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreidnpqqmg7gsyg2ovce2hndfp4hijobaanpwhueqif53tqvjeqjtnm", @@ -9921,9 +9821,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Anyone building #dotnet #Aspire hosting packages know the answer to this one?\n\ngithub.com/dotnet/aspir...\n\ncc @davidfowl.com @maddymontaquila.net" }, "embed": { @@ -9983,9 +9881,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiceoi2kvjrspqhqwuopqhklsfwpnendt55hdpbkwh5t4zqr3ym2ia", @@ -10256,9 +10152,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "😀 .NET Aspire running on Azure App Services is one of the top community asks!\n\n🏪 eShopLite with Store & Products as App Services, Semantic Search with Azure AI Foundry.\n\n🔗Repo github.com/Azure-Sample... \n\n#AppService #dotnet #Aspire #Azure" }, "embed": { @@ -10570,9 +10464,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "@davidfowl.com any tips on building a AddLazyRabbitMQ() extension for #aspire? Basically I want to wrap AddRabbitMQ but check if there is already a broker running and if so return an IResourceWithConnectionstring instead of starting a new container image of RabbitMQ" }, "replyCount": 1, @@ -10736,9 +10628,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I’m exploring a 2026 run for Congress in NY-1, as a local teacher, union supporter, & middle-class Long Islander, I’m tired of politics that ignore working families. \nLet’s build something better, together. \nFollow for updates!\n#PeopleOverPolitics\n#WorkingFamilies \n#IndieVoices \n#UnionStrong\n#Aspire" }, "embed": { @@ -11011,9 +10901,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET #Aspire is wild. Huge props to @davidfowl.com & team. Absolute 🔥" }, "replyCount": 0, @@ -11095,9 +10983,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Using the new interaction service coming in the next version of .NET Aspire, it's now trivial to build custom commands that prompt with custom UI. Here's an example of adding a command that can send a message to the service bus emulator.\n\n#dotnet #aspire" }, "embed": { @@ -11190,9 +11076,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Sneak peak of the new parameter filling experience in the next version of .NET Aspire. Fully code driven and custom to your application.\n\n#dotnet #aspire" }, "embed": { @@ -11422,9 +11306,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "tags": [], "text": "It's Aspire Community Toolkit release time!\n\n9.6 brings two new integrations, MCP Inspector + PowerShell, and we say fairwell to the SWA emulator integration.\n\nThere's also an overhaul of the nodejs installers so make them more robust.\n\ngithub.com/CommunityToo...\n\n#dotnet #aspire" }, @@ -11547,9 +11429,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "you have to love @jimmybogard.com \nin his talk about #OpenTelemetry in a Brownfield World (youtu.be/6Dwy7qeqaZk?...), he finds words about #Aspire I haven't been able to say but feel them deeply in my heart. It is \"the best observability UI you'll probably ever see, but don't put it into production\"" }, "embed": { @@ -11721,9 +11601,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Howdy folks! We're going live tonight on #Twitch @ 7 CST with a hardcore programming stream! We're learning #Blazor and #DotNet #Aspire to build a COVID tracker following modern #DDD best-practices in preparation for an upcoming interview!\n\nwww.twitch.tv/dxeys\n\n#bananigans #streamupdates #webdev" }, "embed": { @@ -11853,9 +11731,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Everyone says Azure has great DX. So where's the debug button?\n\nTurns out .NET Aspire solves this perfectly. Run Azure Functions + Postgres locally with full debugging. No more deploy-to-test.\n\nNew video shows exactly how 👇\n\nyoutu.be/d7yoIvx0J0s\n\n#dotnet #serverless #azure #aspire" }, "embed": { @@ -11984,9 +11860,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Join us for our next online Umbraco Kent Meetup on the 17th July @ 7pm\n\nWe've got Carl Sargunar talking to us about .NET Aspire and Umbraco and we will be discussing all of the hot topics from Codegarden 2025! \n\nSign-up here: \n\nwww.meetup.com/umbraco-kent...\n\n#umbraco #meetup #dotnet #aspire" }, "embed": { @@ -12083,9 +11957,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Why should you use #Aspire for all your #Blazor projects? Because it now includes GitHub CoPilot, that's why. Thanks for coming to my TED talk..." }, "embed": { @@ -12848,9 +12720,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Working a new blog post on adding #dotnet #Aspire to an existing app. The current posts suggests a reading time of 25+ minutes. Is that too long for a blog post? It's taking a app from nothing to fully \"Aspified\". I don't explain everything, leaving some content for a future posts. Thoughts?" }, "replyCount": 3, @@ -12992,9 +12862,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "In this video www.youtube.com/watch?v=COWL... I share how I build a full GitLab CI/CD for .NET Aspire that:\n- compile\n- execute the unit tests\n- check for security issue and secret leak\nThe best of it?! You can have all of it for your projects! 🎉\n#AI #GitLab #Duo #devops #dotnet #aspire" }, "embed": { @@ -13054,9 +12922,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I’m out of #aspire stickers otherwise I would have left a trail of them up the east coast of Australia." }, "replyCount": 1, @@ -13426,9 +13292,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The next version of aspire introduces a new a new API that allows integrations to build interactive experiences that show user forms or async notifications via the dashboard and cli. \n\nThis will make it really easy to build experiences that require user interaction.\n\n#dotnet #aspire" }, "replyCount": 3, @@ -13495,9 +13359,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Starting from the next version of aspire you’ll get version update notifications in the dashboard when running older unsupported versions. Remember aspire is a “tip” product, and you should stay on the latest!\n\n#dotnet #aspire" }, "replyCount": 0, @@ -13564,9 +13426,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The next version of aspire (9.4) completes a big piece of the puzzle for developer onboarding; Parameter prompting.\n\nUnresolved parameters will show up in the dashboard, allowing the user to provide values. Dependent resources will wait for them to be resolved before continuing!\n\n#dotnet #aspire" }, "replyCount": 1, @@ -13746,9 +13606,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Working on something cool:\n\nSwiss swiyu implemented using Aspire and .NET Core\n\nswiyuaspiremgmt.delightfulsky-453308fc.switzerlandnorth.azurecontainerapps.io\n\nI plan to publish the code next month.\n\n#swiyu #eid #aspire #aspnetcore #dotnet #identity #DigitalIdentity #DigitalIdentities #swiss #didas" }, "embed": { @@ -14056,9 +13914,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We are super excited to welcome Year 6 to Woodcote tomorrow for their Taster Day! 😬 #WeAreWoodcote #ASPIRE #Year6TasterDay" }, "replyCount": 0, @@ -14109,9 +13965,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreicqbpqdadf7dlbsvxzvapkgdii3nnmbzpagk7ywawuarmeluehxum", @@ -14449,9 +14303,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: Implement ASP.NET Core OpenID Connect with Keycloak to implement Level of Authentication (LoA) requirements\n\ndamienbod.com/2025/07/02/i...\n\n#aspnetcore #dotnet #aspire #keycloak #identity #authentication #loa #iam #identity" }, "embed": { @@ -14769,9 +14621,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I created a little #dotnet #Aspire extension to build dotnet projects." }, "embed": { @@ -14895,9 +14745,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Finally got it working! A reusable deployment pipeline defined in C# that can take any aspire project and deploy it to a VM with ssh and docker.\n\n#dotnet #aspire \n\ngithub.com/davidfowl/As..." }, "embed": { @@ -15036,9 +14884,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Familiar with the custom resource command feature in .NET Aspire? Nope, didn't think so. But it's an incredibly useful way to help debug message driven systems locally on your machine using .NET Aspire.\n\n#dotnet #aspire #aws #lambda #serverless" }, "embed": { @@ -15162,9 +15008,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreibczuzllc2kjlld3u2bsosv77gxerphnx5twr6vinfintjooukc2a", @@ -15312,9 +15156,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Creating a #Blazor #Aspire Local AI Chat Bot blazorhelpwebsite.com/ViewBlogPost... #ollama #phi" }, "embed": { @@ -15395,9 +15237,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We got more bangers shipping in the next version of aspire (9.4). First time I’ve worked on a product that is shipping an interactive cli. It’s been really fun and interesting leaving IDE land for a little 😅\n\n#dotnet #aspire" }, "replyCount": 0, @@ -15489,9 +15329,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Finally managed to get #LocalStack working with #Aspire today. I just need a better solution than a 20 second delay to prevent my app starting before it is ready. \n\ngithub.com/dotnet/aspir..." }, "embed": { @@ -15826,9 +15664,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I'm curious if you saw one of our new docs (released during #build) @anthonysimmon.com — the learn.microsoft.com/dotnet/aspir... is the first time we've officially discussed DCP. I know, you were one of the first community members to talk about it. 🤓 #aspire" }, "embed": { @@ -15928,9 +15764,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Happy to share I finished my demo app for an upcoming conference talk. It's .NET #Aspire with #dapr running a distributed (event-driven maybe) chat server, and obviously a front-end that allows you to actually chat. Runs locally, planning cloud deployment sometime soon: github.com/nikneem/aspi..." }, "embed": { @@ -16146,9 +15980,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Saw a demo today with an internal team building multi repo services with aspire using a shared container registry and an AddMicroservice method to bring in and locally test end to end scenarios. Really clever approach!\n\n#dotnet #aspire" }, "replyCount": 3, @@ -16369,9 +16201,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We gave aspire publish a little facelift\n\n#dotnet #aspire" }, "embed": { @@ -16475,9 +16305,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "@justin-lampe.com spent a bunch of time working on a Scalar integration for Aspire so you can use Scalar to interact with OpenAPI docs provided by *all* APIs in your distributed Aspire app.\n\nTry out the initial cut and share your thoughts! 💃\n\n📝: guides.scalar.com/scalar/scala...\n\n#dotnet #aspire" }, "replyCount": 0, @@ -16597,9 +16425,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Just Posted: A #DotNet #Aspire project using #Ollama to host a local #Blazor Chat Bot - github.com/ADefWebserve..." }, "embed": { @@ -16703,9 +16529,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Another Friday means we take another codebase and Aspirify it \n\nyoutu.be/zCWz7QKZmek\n\n#dotnet #aspire" }, "embed": { @@ -16797,9 +16621,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "oh boy, feeling pretty good about this Aspire setup. Running my SQL server, a node front end, aspnet API, and 10 client application similating hardware reporting into our call center #dotnet #aspire" }, "embed": { @@ -16903,9 +16725,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Tomorrow, the Aspire team with @maddymontaquila.net broadcasts a live stream to Aspirify an app. I will join them to see if we can optimize the developer experience of an existing app and see what #Aspire can really do. Maybe @davidfowl.com or @damianedwards.com chime in as well?" }, "replyCount": 2, @@ -16991,9 +16811,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "custom url names in #aspire are a dangerous feature 🤪 @damianedwards.com" }, "embed": { @@ -17074,9 +16892,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Just saw some demos of some upcoming Aspire features. Will be a game changer for onboarding and setup of projects!\n\n#dotnet #aspire" }, "replyCount": 3, @@ -17305,9 +17121,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "In case you missed it, check out this video on how #Aspire can help in developing agentic systems!\n\n#dotnet #aspire #ai #semantickernel" }, "embed": { @@ -17367,9 +17181,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiesbflzrzewedv5v22bd7gew2sc6g2pzkuoivrrarolm7fugutdbi", @@ -17758,9 +17570,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We started a series called AspiriFridays where we take a foreign codebase and “aspirfy it”. It’s lots of fun and educational (even for the team). \n\n#dotnet #aspire\n\nyoutube.com/playlist?lis..." }, "embed": { @@ -17866,9 +17676,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Apart from the below, has anyone cracked getting #dotnet #aspire to work seamlessly across multiple solutions? This is the next big technical challenge I want to tackle, any guidance or tips would be appreciated \n@davidfowl.com @maddymontaquila.net" }, "embed": { @@ -17956,9 +17764,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "Just dropped a deep-dive on how we built Leap, an opinionated, reliable CLI tool powered by .NET Aspire to make distributed system development easier for all Workleap developers 🚀.\n\nmedium.com/workleap/how...\n\n#dotnet #aspire" }, "labels": [], @@ -18069,9 +17875,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Haven't checked out what Aspire 9.3 brings yet? 👇\n\nlearn.microsoft.com/en-us/dotnet...\n\n#dotnet #aspire" }, "embed": { @@ -18406,9 +18210,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The #scalar integration for #dotnet #aspire is coming soon 👀" }, "replyCount": 0, @@ -18651,9 +18453,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Want to see how you can add .NET Aspire to an existing project? Check out my session from @ndcconferences.com youtu.be/gNXzqNHzCR8?...\n\n#dotnet #aspire" }, "embed": { @@ -18743,9 +18543,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Dashboard reconnect dialog improvements coming in Aspire vNext:\n\n⚡️ New reconnect dialog introduced in Blazor .NET 9\n🎨 Light & dark mode support\n🌍 Fully localized dialog\n\n#dotnet #aspire" }, "embed": { @@ -19083,9 +18881,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Very excited to be co-sponsoring the \"TrailBlazor Conference 2025\" on June 26, 2025, a free virtual community event showcasing the spirit of excitement and innovation within the .NET developer ecosystem. Registration is open at trailblazor.net - sign up today! #blazor #dotnetmaui #aspire #oqtane" }, "embed": { @@ -19253,9 +19049,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I like the new Aspire 9.3 additions but the Yarp stuff seems a bit flaky. I’ve had to resort to a separate project for now.\n\nIt also doesn’t seem to like launching out .net framework app in non-debug mode.\n\n#dotnet #aspire" }, "replyCount": 1, @@ -19473,9 +19267,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 Thinking about .NET Aspire? You don’t have to go all-in from day one! Start local, improve your dev experience, and expand as Aspire matures. Check out my step-by-step guide: intrepid-developer.com/blog/adoptin... #dotnet #Aspire #DevExperience" }, "embed": { @@ -19595,9 +19387,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Quick weekend learning experiment using #csharp #dotnet 9 WPF application pushing Open Telemetry logs and metrics to .NET #aspire dashboard running in a docker container! Done in 20 minutes with some help of @jetbrains.com AI Assistant.\nCrazy how fast you can learn knowing what to ask 🤩" }, "embed": { @@ -19806,9 +19596,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Out now: The Microsoft Fluent UI #Blazor library v4.12.0! 27 PRs merged and 3(!) new contributors. See the image for what this version will bring to a future #Aspire Dashboard release. All the details at fluentui-blazor.net/WhatsNew. An in-depth blog will come next week." }, "embed": { @@ -20212,9 +20000,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I've been meaning to get familiar with .NET Aspire and this is...certainly one way to do that 😅 Excited to do some coding improv tomorrow!\n\n#dotnet #aspire #mvpbuzz" }, "embed": { @@ -20311,9 +20097,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "AspiriFridays is BACK TOMORROW! at 11am PST/2pm EST - and we have A GUEST!!! @seankilleen.com will be joining me and @damianedwards.com @davidpine.net ( @davidfowl.com will be watching) to aspireify his PRODUCTION CODE????? youtube.com/@dotnet" }, "labels": [], @@ -20385,9 +20169,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I’ve been jumping through hoops today to get something working, and I think I finally got it. Integration tests with #DotNet #Aspire that run locally and in Jenkins (docker in docker). Had to work out why dcp said “file not found” in an Alpine image, and run my app via the Dockerfile." }, "replyCount": 1, @@ -20646,9 +20428,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "This is the first in a series of articles by Ian Griffiths showing how to use .NET Aspire's dev-time orchestration to write integration tests for code that uses SQL Server.\n\nendjin.com/blog/2025/06...\n\n#dotnet #aspire" }, "embed": { @@ -20828,9 +20608,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Amazing to meet my fellow ✨Featured Voice✨ Dr @funchainmd.bsky.social at the #WLO event. Best on your presentation today! ‪@aspire-cop.bsky.social‬ #ASPIRE #ASCO25 #HeForShe 💞 #SuppOncSelfies📸\n@kmittalmd.bsky.social \n @ascocancer.bsky.social \n@oncodaily.bsky.social" }, "embed": { @@ -21051,9 +20829,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "Ce mardi 3 juin à 17h30, rendez-vous chez Microsoft Montréal pour un meetup sur comment améliorer l'expérience de développement avec .NET Aspire. Démos, expérimentations poussées et astuces pour tirer le meilleur de Aspire.\n\n📍 www.meetup.com/msdevmtl/eve...\n\n#dotnet #aspire #msdevmtl" }, "embed": { @@ -21317,9 +21093,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Single file cs apphost in aspire github.com/dotnet/aspir...\n\n#dotnet #aspire" }, "embed": { @@ -21563,9 +21337,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Recently added an ability to show #aspire resource diagrams to our Rider plugin. Looks pretty cool" }, "embed": { @@ -21713,9 +21485,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Hangfire MCP Server in Standalone Mode\"\n\nnikiforovall.blog/dotnet/2025/...\n\n#dotnet #mcp #ai #aspire" }, "embed": { @@ -21802,9 +21572,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "2.5 hour train 🚆 journey home. Added #dotnet #aspire to yet another solution/repository. \n\nIt gets easier each time, and I learn something new each time." }, "replyCount": 0, @@ -22019,9 +21787,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreihlgxpyxkyvmic6jq62dvxxj6bpongikypamvt54muuxhwpie7msm", @@ -22105,9 +21871,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "@davidfowl.com quick #aspire question...how can I do some parsing on a connection string from RabbitMQ before it's passed as an environmental variable to a project. E.g. builder.AddProject<>(...).WithEnvironment(\"rabbit\", ParseAndDoSomething(rabbitmqresource));" }, "replyCount": 1, @@ -22438,9 +22202,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Command line text editing on the go with Microsoft Edit - A sleek and lightweight CLI text editor.\n\n#dotnet #csharp #CLI #Console #aspnetcore #Windows #Linux #Vim #Editor #Rust #XML #JSON #Azure #Aspire #Blazor #AWS #Desktop #Mobile #Web #API #dotnetmaui #SQLServer \n\negvijayanand.in/2025/05/29/h..." }, "embed": { @@ -22634,9 +22396,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "This is one of the most complete aspire samples I’ve seen so far.\n\n#dotnet #aspire\n\ngithub.com/foxminchan/B..." }, "embed": { @@ -22740,9 +22500,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Elevating Development with .NET Aspire: AI Cloud and Beyond\n\nyoutu.be/zfgIy2wXJVY?...\n\n#dotnet #aspire" }, "embed": { @@ -22859,9 +22617,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: Converting a docker-compose file to .NET Aspire \n\nandrewlock.net/converting-a... \n\nIn this post I describe how I converted the deployment method of the mailing-list manager lismonk from a docker-compose.yml file to an Aspire app host project\n\n#dotnet #Aspire #csharp" }, "embed": { @@ -22953,9 +22709,7 @@ } } ], - "langs": [ - "ja" - ], + "langs": ["ja"], "text": "We welcome Prof. Satoshi Arai from Kanazawa University! We learned a lot!\n#JST #ASPIRE" }, "embed": { @@ -23064,9 +22818,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Using .NET Aspire and need powerful feature flagging? 🤔 \nThe awesome community has you covered with a new GO Feature Flag integration!\n\nSee for yourself: www.nuget.org/packages?q=g...\n\n#dotnetdeveloper #FeatureToggles #Aspire" }, "embed": { @@ -23263,9 +23015,7 @@ } } ], - "langs": [ - "cs" - ], + "langs": ["cs"], "text": "💡 .NET in action: OpenTelemetry made clear, Aspire flows untangled, and mobile interop decoded.\n\nAlex Thissen, @tonipetrina.bsky.social, Milos Kotlar & Ivan Povazan delivered the tech deep dive we all needed. 🔧📱\n\n #UpdateConf #dotnet #OpenTelemetry #Aspire #MobileDev #CodeSmart" }, "embed": { @@ -23401,9 +23151,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "\"How we power Xbox services at scale and boost developer productivity with C# & .NET\"\n\nyoutu.be/nkCeYar6S5I\n\n#dotnet #aspire" }, "embed": { @@ -23540,9 +23288,7 @@ } } ], - "langs": [ - "ja" - ], + "langs": ["ja"], "text": "Highlights of today’s workshop.\nGreat talks and poster presentations!\n#JST #ASPIRE" }, "embed": { @@ -23733,9 +23479,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We made it! Enjoying the #JST #ASPIRE kick-off meeting in #Osaka. Thanks @takephos.bsky.social for hosting. Looking forward to all of the talks and discussions this week from all of the members of our international team. #Science" }, "embed": { @@ -23850,9 +23594,7 @@ } } ], - "langs": [ - "ja" - ], + "langs": ["ja"], "text": "We are ready for Kick-Off International Workshop #JST #ASPIRE!" }, "embed": { @@ -24029,9 +23771,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "So... #MSBuild 2025 ended and I couldn’t stop thinking about #NLWeb & Observability\nSo I built this 👇\n🧠 Real-time viz stack for devs\n⚙️ #OpenTelemetry + Aspire\ngo.fabswill.com/OTELNLWebDemo\nWhat telemetry would you want in a tool like this?\n#NLWeb #Aspire #DotNet #Developers #GenAI" }, "embed": { @@ -24166,9 +23906,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Simplifying Background Job Scheduling Using Hangfire MCP Server\"\n\nnikiforovall.blog/dotnet/2025/...\n\n#dotnet #ai #mcp #aspire #hangfire" }, "embed": { @@ -24286,9 +24024,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We're on our way to #Osaka for the kick-off meeting for our #JST #ASPIRE funded project. Looking forward to seeing @takephos.bsky.social, all of the other PIs and the rest of the team on this international and interdisciplinary project." }, "embed": { @@ -24365,9 +24101,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I spent a chunk of yesterday converting one of my projects from Docker compose to #Aspire. I'm pretty impressed. Although I'm completely stuck trying to mount a volume to a container. Very frustrating. \n\n#dotnet" }, "replyCount": 1, @@ -24474,9 +24208,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 New blog! Learn how to use .NET Aspire to easily deploy multi-language apps to any Docker host or VPS like Digital Ocean. Make orchestration simple, whatever your stack!\n👇 Read the full guide: intrepid-developer.com/blog/aspire-... #aspire #dotnet #docker #devops" }, "embed": { @@ -24575,9 +24307,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Why doesn’t the new HybridCache export telemetry, even when the underlying Redis DistributedCaching is configured? \n\nI can't find any documentation or parameters about this regard either.\n\nI'm struggling to set this up...\n\n#dotnet #aspire #hybridcache #otel" }, "replyCount": 0, @@ -24784,9 +24514,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Digging into #aspire 9.3. The new publisher model is really nice and great for people creating tools. Playing with the docker-compose facility. Big change from 9.2's preview of the docker-compose publish. It's exposing problems in my code, not in their code." }, "replyCount": 0, @@ -24905,9 +24633,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Giving a quick look into my upcoming #BeConnected session on MCP — an event management platform connected to various agents.\nOn another note, .NET Aspire is awesome, I can spin up the whole MCP architecture with a single command!\n\n#DotNet #Aspire #MCP #AI" }, "embed": { @@ -25016,9 +24742,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🤓 For the first time ever, we’re going deeper—detailing the underlying architecture (specifically, DCP) of #dotnet #aspire:\n\nlearn.microsoft.com/en-us/dotnet..." }, "embed": { @@ -25536,9 +25260,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreihecgzgksgrylwxg74aol5cjhp6ntt4hysv3bu5od3mo42ssa564q", @@ -25626,9 +25348,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreicd4yiwugou2rb4bgrq6si7kx5gvneo4evvcebfcrfx5lcjvyl5uq", @@ -25721,9 +25441,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Some of the people responsible for #dotnet #aspire gathered together for a team dinner—via Microsoft Build. 🤓" }, "embed": { @@ -25999,9 +25717,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "GitHub Copilot is now available in the .NET Aspire Dashboard. Now is the time to update to .NET Aspire 9.3 🚀 .\n\n#dotnet #aspire #copilot" }, "embed": { @@ -26108,9 +25824,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreial7u7d2vzopvx3hgyeyfiedxbckcnlwhezabse7wmaiah2ykduju", @@ -26235,9 +25949,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET Aspire support is now available in public preview for App Service on Linux! 👏\n\n#azure #dotnet #aspire #appservice" }, "embed": { @@ -26505,9 +26217,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET Aspire 9.3 is here with copilot.\n\ndevblogs.microsoft.com/dotnet/intro...\n\n#dotnet #aspire #copilot" }, "embed": { @@ -26612,9 +26322,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The new Aspire 9.3 looks like a major release\nlearn.microsoft.com/en-us/dotnet...\n\n#dotnet #aspire" }, "embed": { @@ -26719,9 +26427,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "I turned my deep dive about our internal Leap CLI into an impressive AI-generated Spotify podcast using NotebookLM 🚀. Listen and learn how we built on top of .NET Aspire to make local development easier for all Workleap developers!\n\nopen.spotify.com/episode/1S6w...\n\n#dotnet #aspire" }, "embed": { @@ -27044,9 +26750,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 6:\n\nThe console logs page URL now uses a friendly resource name (e.g., frontend) instead of an internal ID. This means you can bookmark the page and it’ll work across dashboard launches 🔖\n\n#dotnet #aspire" }, "embed": { @@ -27168,9 +26872,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Deploying custom Azure resources with #dotnet #aspire... almost easy, but can get complicated once you get off the well trodden path. As I discovered when trying to deploy Event Grid subscriptions for #azure #fhir service.\n\nwww.unravelled.dev/dotnet-aspir..." }, "embed": { @@ -27259,9 +26961,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 5:\n\nMinor tweak: the top-right dashboard menu now features larger icons for easier clicking 🐭\n\n#dotnet #aspire" }, "embed": { @@ -27439,9 +27139,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🔍 Mastering #Observability in GenAI agents?\nWe’re in the Agent-to-Agent era:\n#Salesforce → #SAP → #M365 Copilot → Your plugin.\nSo how do you trace it?\nMaybe #OpenTelemetry (#OTEL).\nAdd it to #SemanticKernel agents, view with #Aspire, export to #Azure.\n\n▶️ go.fabswill.com/OTELforAgents\n#Copilot" }, "embed": { @@ -27544,9 +27242,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 New Blog: \"Getting Started with .NET Aspire\" 🏗️\nLearn how to build, run & observe cloud-native apps with Aspire & Azure 🌐\n✅ Full demo: Real-time chat app\n✅ AppHost, infra, & deployment walkthrough\n✅ Aspire + Azure Developer CLI \n👉 intrepid-developer.com/blog/getting...\n#Aspire #Azure #CloudNative" }, "embed": { @@ -27635,9 +27331,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 4:\n\nCalls to resources that don’t record their own telemetry — like databases or caches — are now visible in the Traces page UI 🔥\n\nYou can also filter for them directly using the resource selector 🧙‍♂️\n\n#dotnet #aspire" }, "embed": { @@ -27737,9 +27431,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Taming Manifest Sprawl with Aspire\n\nmedium.com/@davidfowl/t...\n\n#dotnet #aspire" }, "embed": { @@ -27819,9 +27511,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreigrqz5xsb4cenxwcsf4bx33rm6jahnffeb5fvnsym7m44catefxdy", @@ -27923,9 +27613,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Woohoo 🎉 my PR that fixes a bug in the #Azure SDK was merged today. This will make it possible to create queues in Azure Storage during infrastructure provisioning #aspire" }, "embed": { @@ -28147,9 +27835,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 3:\n\nPausing telemetry on the metrics page now shows a warning ⚠️\n\nIf metrics aren't updating, we want it to be clear it's because you paused them — not because your app or the dashboard is broken! 😇\n\n#dotnet #aspire" }, "embed": { @@ -28248,9 +27934,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 2:\n\nThe resource page now remembers your filters. You can filter resources by type, state, or health — and your selections will persist when you return to the page 🧐\n\n#dotnet #aspire" }, "embed": { @@ -28346,9 +28030,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I'm a big fan of both DevProxy and Aspire, so it's great to see them working well together! Add DevProxy support with just one line of code in your Aspire configuration. #aspire #dotnet #devproxy" }, "embed": { @@ -28417,9 +28099,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "All right folks, try it and tell us what you think: www.nuget.org/packages/Dev..." }, "labels": [], @@ -28500,9 +28180,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Here's how we could add @devproxy.bsky.social as a resource to an Aspire app. Thinking about supporting both using it as executable and a container:\n- exe is easier if you have it already installed\n- container is universal but requires adding PFX and volume mounts for cert and config\n\nThoughts?" }, "labels": [], @@ -28620,9 +28298,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Interesting article how the Copilot team has transitioned from Monolith to Microservices with .NET Aspire. Recommendation to read!\n\ndevblogs.microsoft.com/blog/how-the...\n\n#dotnet #aspire #copilot" }, "embed": { @@ -29048,9 +28724,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.3 new dashboard features, day 1:\n\nThe resource graph adds a context menu. Right click on a resource to view telemetry, run commands or navigate to endpoints.\n\n#dotnet #aspire" }, "embed": { @@ -29775,9 +29449,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "Just dropped a deep-dive on how we built Leap, an opinionated, reliable CLI tool powered by .NET Aspire to make distributed system development easier for all Workleap developers 🚀.\n\nmedium.com/workleap/how...\n\n#dotnet #aspire" }, "embed": { @@ -30013,9 +29685,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Intent vs. Mechanics: The Power of Abstraction in Aspire\n\nmedium.com/@davidfowl/i...\n\n#dotnet #aspire" }, "embed": { @@ -30090,9 +29760,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We have a team working on an effort called “Aspire for 1P” inside of Microsoft. The goal is simple, build the default toolchain for developing and deploying compliant services inside Microsoft. \n\n#dotnet #aspire" }, "replyCount": 5, @@ -30189,9 +29857,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Eager to know what Aspire is and how to get started by understanding its capabilities?\n\nJoin us for our next online streaming by @xaberue.bsky.social about it! Don't miss out!\n\n#dotnet #aspire\n\nwww.dotnetbarcelona.com/events" }, "embed": { @@ -30304,9 +29970,7 @@ } } ], - "langs": [ - "de" - ], + "langs": ["de"], "text": "Bit late to the game, but started watching the .NET #Aspire Beginners Series by @csharpfritz.com 😊\n#DotNet\n\nyoutu.be/4ixWtXK7KzY" }, "embed": { @@ -30477,9 +30141,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreibyumu5dqwczbivf5px7jvdiid5dy5mrkvnak24lwpljihb6fgkaq", @@ -30552,9 +30214,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Caught up with a bunch of the folks on the #dotnet #aspire team to review some of the end to end stuff we are delivering for .NET Aspire in 9.3.\n\nReally proud of what the team has achieved. Looking forward to demoing some of it in Adelaide next week." }, "replyCount": 1, @@ -30996,9 +30656,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 Just published a blog on .NET Aspire, and why you should absolutely give it a try, even if you’re not a .NET dev.\n\n🧠 What it is\n⚠️ Misconceptions\n🛠 Real-world usage\n📦 Easy local setups\n🔍 Built-in observability\n\nRead here 👉\nintrepid-developer.com/blog/why-you... \n\n#dotnet #aspire #cloudnative" }, "embed": { @@ -31119,9 +30777,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Yooo! @csharpfritz.com is up again with his session.\n Aspirify: Building and Deploying with .NET Aspire on Azure! \n\n#dotnet #aspire #StirTrek" }, "embed": { @@ -31309,9 +30965,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreid6i7s4phgffreevqpzjfilf4zv2s3wq6awwjq3iawtcziwwsgzpu", @@ -31412,9 +31066,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Is anyone using .NET Aspire inside GitHub Actions? Use case being I want to spin up my resources to run some tests against. Previously, I would use `docker compose up -d` but as far as I know there's no way to do `dotnet run -d`.\n\n#dotnet #aspire\n\nCC @davidfowl.com @maddymontaquila.net" }, "replyCount": 1, @@ -31478,9 +31130,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".Net Aspire is really cool, but what are people doing with their established microservices split in lots of separate git repositories? #dotnet #aspire" }, "replyCount": 2, @@ -31666,9 +31316,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Model. Run. Ship. The New Way to Build Distributed Apps\n\nmedium.com/@davidfowl/m...\n\n#dotnet #aspire" }, "embed": { @@ -31740,9 +31388,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Discovered a bug in Azure.Provisioning.Storage, took a quick look at the repo but confused by how all the generated code gets generated...need to clone it and take a closer look\n\n#dotnet #aspire" }, "replyCount": 1, @@ -31805,9 +31451,7 @@ } } ], - "langs": [ - "nl" - ], + "langs": ["nl"], "text": "Got the #aspire standalone dashboard running on Azure Web Apps! Anyone who'd be interested in a blog post on that? #dotnet" }, "replyCount": 4, @@ -32121,9 +31765,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Any #Aspire people on here? Has anyone had a way a deploy two different builds as two separate Resources? Maybe only possible as containers?" }, "replyCount": 0, @@ -32174,9 +31816,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I've been thinking about replacing the demo code in one of my repos with something which uses #aspire.\nPros: folks can just F5 and everything will work\nCons: the demo is an ASP .NET Core minimal API with one endpoint.\nFeels like it could add complexity for the sake of complexity." }, "replyCount": 0, @@ -32227,9 +31867,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Can't get the #aspire standalone dashboard running on a single endpoint. Source code says it's possible but no luck so far. OTLP endpoints always default to 18889 and 18890." }, "replyCount": 0, @@ -32637,13 +32275,7 @@ } } ], - "tags": [ - "Core", - "9", - "8", - "Development", - "news" - ], + "tags": ["Core", "9", "8", "Development", "news"], "text": ".NET Aspire 9.2 Released with Expanded Deployment Options and Dashboard Improvements The .NET tea...\n\nhttps://www.infoq.com/news/2025/04/dotnet-aspire-92-release/?utm_campaign=infoq_content&utm;_source=infoq&utm;_medium=feed&utm;_term=global\n\n#.NET #Aspire #.NET […] \n\n[Original post on infoq.com]" }, "embed": { @@ -32794,9 +32426,7 @@ } } ], - "langs": [ - "nl" - ], + "langs": ["nl"], "text": "The #CloudBrew 2025 Call for Papers is open! sessionize.com/cloudbrew-2025 #azure #dotnet #security #machinelearning #aspire" }, "embed": { @@ -32907,9 +32537,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "New feature coming in Aspire vNext:\n\nCalls to outgoing resources, such as a database or cache, are visible on the traces page UI 🔥\n\nAnd you can filter to them directly using the resources selector 🧙‍♂️\n\ngithub.com/dotnet/aspir...\n\n#dotnet #aspire" }, "embed": { @@ -33139,9 +32767,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Just updated my .NET Telemetry Source Generator to v3.1.0 - go check it out! github.com/kjldev/purvi...\n\nNuget: www.nuget.org/packages/Pur...\n\nThis release includes updates to the sample app supporting the latest #dotnet #aspire release.\n\nBig thanks for @simoncropp.bsky.social for contribution." }, "embed": { @@ -33229,9 +32855,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "tags": [], "text": "It took a bit longer than we'd hoped, but here we go - the .NET Aspire Community Toolkit 9.4 release is out, with support for Aspire 9.2! github.com/CommunityToo...\n\n#dotnet #aspire" }, @@ -33351,9 +32975,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Composable AI with .NET Aspire: Extending DIAL Assistants with Add-Ons\"\n\nLearn how to build composable AI applications with .NET Aspire and AI DIAL Addons.\n\nnikiforovall.github.io/dotnet/ai/20...\n\n#aspire #dotnet #dial #genai" }, "embed": { @@ -33665,9 +33287,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I finally have a real #MCP server which connect to #GitHub to get information about a user 🎉 Under 3 seconds, #ollama LLM is called, then the MCP Server calling the GitHub API and finally again the LLM to write the answer. I can see all traces & logs, thx to #dotnet #aspire" }, "embed": { @@ -33815,9 +33435,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Bringing #dotnet #aspire with #mcp server and #ollama altogether and a bit of hallucination about me 🤪 except for the GitHub account which comes from the MCP server 👍🏼\n\nYou can read more about MCP server implementation in .NET on my blog laurentkempe.com My last 4 posts talk about it" }, "labels": [], @@ -33917,9 +33535,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreifjk4hg62j6esklnf4l6bnkqszhosaewesaogcxwqujnal2egksya", @@ -34066,9 +33682,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Bringing #dotnet #aspire with #mcp server and #ollama altogether and a bit of hallucination about me 🤪 except for the GitHub account which comes from the MCP server 👍🏼\n\nYou can read more about MCP server implementation in .NET on my blog laurentkempe.com My last 4 posts talk about it" }, "embed": { @@ -34189,9 +33803,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "✍️ Blogged: Using YARP as BFF within .NET Aspire: Integrating YARP into .NET Aspire\n\n#dotNET #Aspire #YARP\n\ntimdeschryver.dev/blog/integra..." }, "embed": { @@ -34491,9 +34103,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I wonder if anyone is working on a #dotnrt #aspire Terraform adaptor.\n\nWhile we’re an MS house hosting on Azure, it’s never Bicep, always Terraform. The Platform Engineering team chose it, prefer it, matches their skill set.\n\nAlso means multi-cloud targeting made much simpler." }, "replyCount": 0, @@ -34580,9 +34190,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "This is pure beauty .NET Aspire CLI publishing docker compose 🤩\n\n#dotnet #aspire" }, "embed": { @@ -34925,9 +34533,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I've updated the #Aspire samples using #AzureSQL and #SQLServer to use the latest 9.2 ver\n\nBring-Your-Own-SQL-Server (BYOSS), Aspire-Hosted SQL Server, DBUp, DB Prj, EF Core, DataAPIBuilder, End-To-End \"ToDo List\" app\n\nMake sure to check them out here: github.com/Azure-Sample..." }, "embed": { @@ -35008,9 +34614,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I'm preparing a meetup and a workshop at my current company about #dotnet #Aspire. I'm taking notes of all the advantages that it has compared to docker compose. Simplicity, C# over yaml and the ability to work with managed resources as well as with containers.\n\nWhat other big advantages do you see?" }, "replyCount": 1, @@ -35406,9 +35010,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Live Now: AI Agents + .NET Aspire\n#agenthacks #dotnet #aspire @microsoft.com \n\nwww.youtube.com/watch?v=KxlI..." }, "embed": { @@ -35660,9 +35262,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET Aspire 9.2 is Now Available with New Ways to Deploy - .NET Blog devblogs.microsoft.com/dotnet/dotne... #dotnet #aspire" }, "embed": { @@ -35926,9 +35526,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "💥 Having a blast merging ALL our eShopLite AI demos (RAG, MCP, Azure AI Search, realtime voice, QDrant & more!) into ONE epic repo! \n\n😎 And yes, upgrading everything to Aspire 9.2 'cause it's 🔥 and I'm having way too much fun \n\n👉 Stay tuned aka.ms/genainet\n\n#dotnet #AI #Aspire #Azure #GenAI #devfun" }, "embed": { @@ -36162,9 +35760,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Focusing on finalising the plan for the .NET Aspire course today, and will be recording over the weekend! What perfect timing that 9.2 has now dropped! 😊 #dotnet #aspire #dometrain" }, "replyCount": 0, @@ -36348,9 +35944,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "A new alias added to my Powershell profile...\n#dotnet #aspire" }, "embed": { @@ -36431,9 +36025,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "tags": [], "text": "We're going to have some delays with the Aspire Community Toolkit updating to support Aspire 9.2, there's a breaking change in how the Bicep is generated with auth that's going to require some fixes in the Dapr integrations.\n\n#dotnet #aspire" }, @@ -36625,9 +36217,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 14:\n\nAspire 9.2 release day is here! 🎉 We saved the best for last: the resource graph.\n\nVisualize your app's resources and relationships with with this interactive tool. Select, zoom, pan, drag, filter, explore, and build cool apps 💪\n\n#dotnet #aspire" }, "embed": { @@ -36733,9 +36323,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "We just shipped .NET Aspire 9.2! learn.microsoft.com/en-us/dotnet...\n\nLots of cool features in this release and a step towards deploying to a lot more places! We're also shipping a new aspire command line tool!\n\n#dotnet #aspire" }, "embed": { @@ -37163,9 +36751,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Ayeee! .NET Aspire 9.2 is out ! \\o/\n\nlearn.microsoft.com/en-us/dotnet...\n\nJoin the Release Party \n\nyoutube.com/watch?v=aVqV...\n #MVPBuzz #dotnet #aspire" }, "embed": { @@ -37626,9 +37212,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "That was a nice French early .NET Aspire 9.2 release party! #dotnet #aspire\n\n@scott.hanselman.com See, I have a better setup now. I still need to get rid of the vacuum cleaner and have better lighting..." }, "embed": { @@ -37741,9 +37325,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "Si vous voulez en savoir plus sur la nouvelle version de .NET Aspire 9.2, écoutez notre dernier podcast avec @anthonysimmon.com #aspire @davidfowl.com \n\n🎞️ www.youtube.com/watch?v=H9pH...\n\n🎧 devdevdev.net/tr04-25-dapr..." }, "labels": [], @@ -37888,9 +37470,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "Si vous voulez en savoir plus sur la nouvelle version de .NET Aspire 9.2, écoutez notre dernier podcast avec @anthonysimmon.com #aspire @davidfowl.com \n\n🎞️ www.youtube.com/watch?v=H9pH...\n\n🎧 devdevdev.net/tr04-25-dapr..." }, "embed": { @@ -37967,9 +37547,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Diving deep into Clean Architecture with .NET 8 and Aspire 9.1, loving how the new tooling makes organizing services and enforcing boundaries so much smoother. Excited about the flexibility and clarity it brings to our solution. Anyone else exploring Aspire with Clean Arch?\n#dotnet #Aspire" }, "replyCount": 0, @@ -38054,9 +37632,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 13:\n\nPausing telemetry is coming in 9.2! Now you can pause and resume the collection of console logs, structured logs, traces, and metrics directly from the dashboard ⏯️\n\n#dotnet #aspire" }, "embed": { @@ -38263,9 +37839,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET Aspire and Azure Functions integration preview - Visual Studio Blog devblogs.microsoft.com/visualstudio... #Aspire #dotnet" }, "embed": { @@ -38362,9 +37936,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Exciting! :) #dotnet #aspire" }, "embed": { @@ -38459,9 +38031,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 12:\n\nResource command buttons are now disabled while running. No more errors from accidentally double-clicking a command 🖱️\n\n#dotnet #aspire" }, "embed": { @@ -38794,9 +38364,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Exploring .NET #Aspire and Adding it to my existing boilerplate\n\ndev.to/berviantoleo... by Bervianto Leo Pratama" }, "embed": { @@ -38924,9 +38492,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Learn how to use Model Context Protocol (MCP) Server Template in Hybrid Mode\"\n\nnikiforovall.github.io/dotnet/2025/...\n\n#dotnet #ai #mcp #aspire" }, "embed": { @@ -39025,9 +38591,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 11:\n\n'WithHttpCommand' is now a first-class citizen, allowing you to invoke HTTP endpoints from the dashboard 🌏\n\nThe example below demonstrates a command that calls the '/reset-db' endpoint on a resource.\n\n#dotnet #aspire" }, "embed": { @@ -39244,9 +38808,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Modeling Your Environment with Aspire\n\nmedium.com/@davidfowl/m...\n\n#dotnet #aspire" }, "embed": { @@ -39493,9 +39055,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "A selection of #images from the 2021 Places For #People staff #conference at #Aspire in #Leeds. I believe one of the real tricks in good #conference_photography is good #people_watching #skills. \n\nAll Images © Paul David Drabble\nAll rights Reserved\n#Photography #Storytelling #Photojournalism" }, "embed": { @@ -39601,9 +39161,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 10:\n\nWe've addressed a range of bugs to make the dashboard more resilient.\n\n👯 Handle duplicate property names in resources\n🗃️ Fix order of results when telemetry limit is exceeded\n🔁 Make restart of resources more reliable\n\n#dotnet #aspire" }, "replyCount": 0, @@ -39666,9 +39224,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#Aspire is going to make the rewrite of our main application 50x easier. #dotnet" }, "replyCount": 0, @@ -39766,9 +39322,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 9:\n\nConsistency in icons, brought to you by \n@maddymontaquila.net.\n\nThe console logs and resources pages now use the 'Options' icon instead of a gear ⚙️❌\n\n#dotnet #aspire" }, "embed": { @@ -40065,9 +39619,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Simplifying Model Context Protocol (MCP) Server Development with Aspire\"\n\nLearn how to develop MCP servers with Aspire.\n\nnikiforovall.github.io/dotnet/2025/...\n\n#dotnet #ai #mcp #aspire" }, "embed": { @@ -40168,9 +39720,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The Aspire Compiler\n\nmedium.com/@davidfowl/t...\n\n#dotnet #aspire" }, "embed": { @@ -40263,9 +39813,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 7:\n\nConsole logs now supports UTC timestamps 🕰️\n\n#dotnet #aspire" }, "embed": { @@ -40666,9 +40214,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Can't wait to go to Krakow and talk about Aspire! #aspire #dotnet #UpdateConference #UCK25" }, "embed": { @@ -40756,9 +40302,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#UCK25 | @tonipetrina.bsky.social\n – Lead SRE at Visma e-conomic, developer at heart, and frequent speaker at conferences, who found passion in QBasic is coming to Update Conference Krakow with a session you won’t want to miss: Aspire End-to-End Flows! 👉 krakow.updateconference.net/en/2025/sche..." }, "labels": [], @@ -40884,9 +40428,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiaorf2cdj3k2kaywtgxg4g5eoy7hlhwrsr6jgqxyrpatphw2b33si", @@ -40992,9 +40534,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreig7vea2yrgvxkpgorgaqutawm5adabsuxzoaca5wosof6iftxkchq", @@ -41068,9 +40608,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#dotnet #aspire using my commute to London to try and build a custom ProvisionableResource to configure Auth on a Container app 🤯" }, "replyCount": 1, @@ -41151,9 +40689,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 6: \n\nWe've added a search text box to trace details. Now you can quickly filter large traces to find the exact span you need 🧑‍💻\n\n#dotnet #aspire" }, "embed": { @@ -41280,9 +40816,7 @@ } } ], - "langs": [ - "nl" - ], + "langs": ["nl"], "text": "New blog post: A quick guide to integrating the new Azure Service Bus Emulator with .NET Aspire, including an Azure Functions queue trigger and custom commands in the Aspire dashboard.\n\nwww.wagemakers.net/posts/aspire...\n\n#aspire #dotnet #azurefunctions #servicebus" }, "embed": { @@ -41518,9 +41052,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire: A Platform for Reusable Infrastructure\n\nmedium.com/@davidfowl/a...\n\n#dotnet #aspire" }, "embed": { @@ -41635,9 +41167,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The \".NET Conf Focus on Modernization\" agenda is now online -> April 22-23: focus.dotnetconf.net/agenda #dotnet #aspire #blazor #dev" }, "embed": { @@ -41730,9 +41260,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 5:\n\nThe dashboard already masks sensitive values by default, preventing accidental password or key leaks while screen sharing.\n\nThe text visualizer now shows a warning when it's opened for the first time 🕵️\n\n#dotnet #aspire" }, "embed": { @@ -42073,9 +41601,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Congratulations, Year 8. We hope you enjoyed your breakfast with Mrs McKenzie, Mr Deale and Ms Marrill! 🍽\n\n#WeAreWoodcote #ASPIRE #PrincipalsBreakfast #PreparePerformProgress #ExcellenceIsHabit #InvestInYourFuture" }, "embed": { @@ -42201,9 +41727,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 4:\n\nYou can now customize the resource URLs displayed on the dashboard.\n\nAdd display names, reorder them, and even add new URLs in the Aspire host! 🌍\n\n#dotnet #aspire" }, "embed": { @@ -42380,9 +41904,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Is there a PERFECT guide on onboarding an existing #aspnetcore API to #aspire?" }, "replyCount": 0, @@ -42675,9 +42197,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚨 Updated to the latest C# MCP SDK!\nJust refreshed my Aspire + MCP + Blazor demo with the new NuGet packages 🎯\n\n🧪 Code 👉 github.com/elbruno/Aspi...\n🎥 5-min video demo of the .NET magic 👉 www.youtube.com/watch?v=2hol...\n\n#dotnet #AI #MCP #Aspire #Blazor" }, "embed": { @@ -42964,9 +42484,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Congratulations to our Year 7s who attended their second Principal’s Breakfast this morning. Keep up the great work! 🥳\n\n#WeAreWoodcote #ASPIRE #PrincipalsBreakfast #PreparePerformProgress #ExcellenceIsHabit #InvestInYourFuture" }, "embed": { @@ -43126,9 +42644,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Blogged: \"Introducing AI DIAL: The Open-Source AI Orchestration Platform\"\n\nIn this post, I will introduce you to the AI DIAL Platform and its capabilities and show you how to get started with it using .NET Aspire\n\nnikiforovall.github.io/dotnet/ai/20...\n\n#aspire #dotnet #dial #genai" }, "embed": { @@ -43229,9 +42745,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Where are my CLI fans??\n\n#dotnet #aspire" }, "embed": { @@ -43332,9 +42846,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Making Software Like LEGO: How Aspire Brings the Pieces Together\n\nmedium.com/@davidfowl/m...\n\n#dotnet #aspire" }, "embed": { @@ -43427,9 +42939,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 2:\n\nWe've added resource icons to the resources page! The icon color matches the resource's telemetry in structured logs and traces 🎨\n\n#dotnet #aspire" }, "embed": { @@ -43524,9 +43034,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Aspire 9.2 new dashboard features, day 1:\n\nThe next Aspire release is Coming Soon™️, which means daily feature reveals!\n\nFirst up: Finding logs and traces got easier. You can now enable and disable filters to toggle between different results 🔎\n\n#dotnet #aspire" }, "embed": { @@ -43773,9 +43281,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🎉 Orleans.Multitenant 3.0 is out!\n\n✅ Updated to Microsoft Orleans 9.1\n✅ Includes how to use with #dotnet #aspire\n\nNJoy\n⬇️\ngithub.com/VincentH-Net...\n\n#multitenant #cloudnative #csharp" }, "embed": { @@ -44168,9 +43674,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Just posted a #Aspire sample that shows how to use #Azurite to read and write to #Azure storage queues. github.com/ADefWebserve..." }, "embed": { @@ -44256,9 +43760,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "#aspire #dotnet \nis there any we can specify that not to run particular project as debugging mode.\nwhile working on solution where we have Api as separate project (PORT:1313),Blazor as separate project (PORT:9090).While debugging I just want to debug API project but not Blazor. @maddymontaquila.net" }, "replyCount": 0, @@ -44404,9 +43906,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "It was awesome getting to touch base with the Aspire team today! What a great team and product 💯 #aspire #dotnet #MVPBuzz #MVPSummit @davidfowl.com @maddymontaquila.net @damianedwards.com" }, "embed": { @@ -44539,9 +44039,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 I've updated my #Aspire #AzureSQL samples to show how to seamlessly use a #SQLServer container locally and deploy to #AzureSQL. Thanks to .NET Aspire + #EFCore end-to-end deployment is now as simple as 'azd up'! 🌟💻" }, "embed": { @@ -44654,9 +44152,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Did you know that it's possible to add custom commands to your Aspire components?\n\nThis can be useful for tasks that you want to trigger manually via the Aspire dashboard.\n\nAn example can be found in the samples:\ngithub.com/dotnet/aspir...\n\n#dotNET #Aspire" }, "embed": { @@ -44884,9 +44380,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "Xbox + .NET Aspire: Transforming Local Development Practices - .NET Blog\n\ndevblogs.microsoft.com/dotnet/xboxs...\n\n@dot.net #aspire" }, "embed": { @@ -44982,9 +44476,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "The more I delve into Aspire, the more I enjoy it, and it's always quick and simple to find solutions as soon as you find \"troubles\".\n\nToday, cross referencing a BFF with an Angular frontend, while enabling CORS dynamically. \n\n#dotnet #aspire" }, "embed": { @@ -46277,9 +45769,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "reply": { "parent": { "cid": "bafyreiehofzf35osahoszslqkehtuzk4tomear35u6r6cqvcnvyfb5fpxy", @@ -46458,9 +45948,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🎉 The #SQLConf() #Developer 2025 sessions are now live and ready for you to explore! 🚀 \n\n🌟Available online, for free, here: learn.microsoft.com/en-us/shows/... \n\n #AzureSQL #Developers #Aspire #DotNet #AI" }, "embed": { @@ -46681,9 +46169,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "REALITY VS DREAMS\nSure, we can #aspire to fly but it's far less self-deceptive to find pleasure in simply watching the birds." }, "embed": { @@ -46924,9 +46410,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "🚀 Today's Word of the Day: 'Aspire'! Whether it's tackling exhilarating 5Ks or building meaningful connections, I'm all about chasing dreams. What's your motivational word today? Let's inspire each other! 🌟✨ #WordOfTheDay #Aspire #CompassInspiredPurpose" }, "embed": { @@ -47079,9 +46563,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "For #VSLive2025 I've prepared an extensive collection of samples for #Aspire with #SQLServer or #AzureSQL, including #EFCore, #DAB, and Database Projects. If you're a .NET developer eager to test Aspire, this set of samples is exactly what you need! 🚀 devblogs.microsoft.com/azure-sql/ex..." }, "embed": { @@ -47169,9 +46651,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": ".NET #Aspire avec SQL Server : Microsoft met à notre disposition 8 scénarios possibles allant de l'utilisation de son propre serveur SQL avec Entity Framework ou autre devblogs.microsoft.com/azure-sql/ex..." }, "embed": { @@ -47377,9 +46857,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "reply": { "parent": { "cid": "bafyreiddxfmfs7u2kwcdccwyr3g7sluacfmnvuwgya5w5ei7hix5fqti7i", @@ -47622,9 +47100,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": ".NET Aspirations - Embracing OpenTelemetry\n// Integrating #OpenTelemetry with .NET #Aspire \n\ntechwatching.dev/posts/aspire... by @techwatching.bsky.social" }, "embed": { @@ -47713,9 +47189,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I need to get a 4th monitor so that I can permanently have the #Aspire dashboard visible in it 😂 #dotnet #NeverEnoughMonitors" }, "replyCount": 4, @@ -47778,9 +47252,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I don't know who needs to hear this but if you are actively doing the thing, you need to take the word #aspire or #aspiring out of your bio right this instant. You are no longer wishing. You are." }, "replyCount": 0, @@ -47898,9 +47370,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "I’ve been blown away by @dot.net’s #Aspire this week. \n\nIntegrated the local dev flow for a @nextjs.org / @bun.sh app into the dashboard so now it’s easily spun up, talking to the C# API, and hot-reloads on changes made in vs-code.\n\nA few lines of code. Not only that, but I’m running it all cli." }, "embed": { @@ -47999,9 +47469,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "La suite sur youtu.be/09JvZ1lMmis #aspire #dotnet" }, "embed": { @@ -48139,9 +47607,7 @@ } } ], - "langs": [ - "it" - ], + "langs": ["it"], "text": "Monitorare lo stato delle applicazioni è una \"problematica\" sempre più attuale, ed ecco perché nella puntata del podcast di questa settimana vi parlo di #OpenTelemetry e di quanto mi sia utile la dashboard di #Aspire. #dotnet #dotnetinpillole #podcast\nyoutu.be/OWLAb7XvDmg" }, "embed": { @@ -48271,9 +47737,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "✨ Ready for some distributed systems reality checks? Join us as we host @nicovermeir.bsky.social to hear real-life adventures (and misadventures!) with Aspire & Dapr. It’s not just another shiny demo—it's raw, relatable tech talk! 🔥\n\nwww.meetup.com/net-usergrou...\n\n#DotNet #Aspire #Dapr" }, "embed": { @@ -48683,9 +48147,7 @@ } } ], - "langs": [ - "fr" - ], + "langs": ["fr"], "text": "There's an upcoming feature in .NET Aspire that adds a live graph view of resources in the dashboard. However, I believe there's value in generating a static architectural diagram that could be embedded in documentation, for instance. Here's how: anthonysimmon.com/generating-a...\n\n#dotnet #aspire" }, "embed": { @@ -48790,9 +48252,7 @@ } } ], - "langs": [ - "en" - ], + "langs": ["en"], "text": "cool #aspire with #fsharp now as well 🦔💕 , follow F# on @discord.com to get latest community news! github.com/Tarmil/FShar..." }, "embed": { @@ -49110,4 +48570,4 @@ }, "labels": [] } -] \ No newline at end of file +] diff --git a/src/frontend/src/data/testimonials.json b/src/frontend/src/data/testimonials.json index 1d4f1388..343aadee 100644 --- a/src/frontend/src/data/testimonials.json +++ b/src/frontend/src/data/testimonials.json @@ -1,66 +1,66 @@ [ - { - "name": "Steven Price", - "company": "Iceland Foods", - "role": "Software Engineering Manager", - "text": "Aspire lets developers be developers again.", - "avatar": "../assets/testimonials/steven-price.jpg", - "link": "https://www.linkedin.com/in/steve-m-price/" - }, - { - "name": "Russ Harding", - "company": "EQengineered", - "role": "VP Engineering", - "text": "I had someone start on a Monday morning and they were contributing code by lunch.", - "avatar": "../assets/testimonials/russ-harding.jpg", - "link": "https://www.linkedin.com/in/russharding1/" - }, - { - "name": "Nick Chapsas", - "company": "Dometrain", - "role": "Founder & Author", - "text": "The best thing that happened in .NET since it went open source in 2014!", - "avatar": "../assets/testimonials/nick-chapsas.png", - "link": "https://dometrain.com/author/nick-chapsas/" - }, - { - "name": "Milan Jovanović", - "company": "MJ Tech", - "role": "Educator & Content Creator", - "text": "I was surprised by how quickly Aspire got me from idea to running services.", - "avatar": "../assets/testimonials/milan-jovanovic.png", - "link": "https://www.milanjovanovic.tech" - }, - { - "name": "Nk54 (Reddit User)", - "company": null, - "role": null, - "text": "I've never wanted to commit to a Microsoft technology this much.", - "avatar": "../assets/testimonials/nk54.png", - "link": "https://www.reddit.com/user/Nk54" - }, - { - "name": "Craig Taylor", - "company": "Xbox Live", - "role": "Principal Architect", - "text": "Hit F5 to begin — skip the setup boss fight, ship code faster.", - "avatar": "../assets/testimonials/craig-taylor.png", - "link": "https://www.linkedin.com/in/craig-taylor-2594895/" - }, - { - "name": "Sean Killeen", - "company": "SCT Software", - "role": "VP Innovation", - "text": "Aspire was easy to integrate with our existing container orchestration.", - "avatar": "../assets/testimonials/sean-killeen.jpg", - "link": "https://www.linkedin.com/in/seankilleen/" - }, - { - "name": "Dan Clarke", - "company": "Everstack", - "role": "Developer & Podcaster", - "text": "OpenTelemetry out-of-the-box in the Aspire dashboard is a game changer for observability!", - "avatar": "../assets/testimonials/dan-clarke.jpg", - "link": "https://bsky.app/profile/danclarke.com" - } -] \ No newline at end of file + { + "name": "Steven Price", + "company": "Iceland Foods", + "role": "Software Engineering Manager", + "text": "Aspire lets developers be developers again.", + "avatar": "../assets/testimonials/steven-price.jpg", + "link": "https://www.linkedin.com/in/steve-m-price/" + }, + { + "name": "Russ Harding", + "company": "EQengineered", + "role": "VP Engineering", + "text": "I had someone start on a Monday morning and they were contributing code by lunch.", + "avatar": "../assets/testimonials/russ-harding.jpg", + "link": "https://www.linkedin.com/in/russharding1/" + }, + { + "name": "Nick Chapsas", + "company": "Dometrain", + "role": "Founder & Author", + "text": "The best thing that happened in .NET since it went open source in 2014!", + "avatar": "../assets/testimonials/nick-chapsas.png", + "link": "https://dometrain.com/author/nick-chapsas/" + }, + { + "name": "Milan Jovanović", + "company": "MJ Tech", + "role": "Educator & Content Creator", + "text": "I was surprised by how quickly Aspire got me from idea to running services.", + "avatar": "../assets/testimonials/milan-jovanovic.png", + "link": "https://www.milanjovanovic.tech" + }, + { + "name": "Nk54 (Reddit User)", + "company": null, + "role": null, + "text": "I've never wanted to commit to a Microsoft technology this much.", + "avatar": "../assets/testimonials/nk54.png", + "link": "https://www.reddit.com/user/Nk54" + }, + { + "name": "Craig Taylor", + "company": "Xbox Live", + "role": "Principal Architect", + "text": "Hit F5 to begin — skip the setup boss fight, ship code faster.", + "avatar": "../assets/testimonials/craig-taylor.png", + "link": "https://www.linkedin.com/in/craig-taylor-2594895/" + }, + { + "name": "Sean Killeen", + "company": "SCT Software", + "role": "VP Innovation", + "text": "Aspire was easy to integrate with our existing container orchestration.", + "avatar": "../assets/testimonials/sean-killeen.jpg", + "link": "https://www.linkedin.com/in/seankilleen/" + }, + { + "name": "Dan Clarke", + "company": "Everstack", + "role": "Developer & Podcaster", + "text": "OpenTelemetry out-of-the-box in the Aspire dashboard is a game changer for observability!", + "avatar": "../assets/testimonials/dan-clarke.jpg", + "link": "https://bsky.app/profile/danclarke.com" + } +] diff --git a/src/frontend/src/expressive-code-plugins/disable-copy.mjs b/src/frontend/src/expressive-code-plugins/disable-copy.mjs index 392bc85b..02b718e4 100644 --- a/src/frontend/src/expressive-code-plugins/disable-copy.mjs +++ b/src/frontend/src/expressive-code-plugins/disable-copy.mjs @@ -3,26 +3,26 @@ * Adds data-disable-copy attribute to code blocks when 'disable-copy' is in the meta string */ export function pluginDisableCopy() { - return { - name: 'disable-copy', - hooks: { - preprocessMetadata: ({ codeBlock }) => { - // Check if meta string contains 'disable-copy' - if (codeBlock.meta && codeBlock.meta.includes('disable-copy')) { - // Store as a property - codeBlock.props.disableCopy = true; - } - }, - postprocessRenderedBlock: ({ codeBlock, renderData }) => { - // Add data-disable-copy to the rendered block's properties - if (codeBlock.props.disableCopy) { - if (!renderData.blockAst.properties) { - renderData.blockAst.properties = {}; - } - // Use camelCase for the property name (will be converted to kebab-case in HTML) - renderData.blockAst.properties['data-disable-copy'] = ''; - } - } + return { + name: 'disable-copy', + hooks: { + preprocessMetadata: ({ codeBlock }) => { + // Check if meta string contains 'disable-copy' + if (codeBlock.meta && codeBlock.meta.includes('disable-copy')) { + // Store as a property + codeBlock.props.disableCopy = true; } - }; + }, + postprocessRenderedBlock: ({ codeBlock, renderData }) => { + // Add data-disable-copy to the rendered block's properties + if (codeBlock.props.disableCopy) { + if (!renderData.blockAst.properties) { + renderData.blockAst.properties = {}; + } + // Use camelCase for the property name (will be converted to kebab-case in HTML) + renderData.blockAst.properties['data-disable-copy'] = ''; + } + }, + }, + }; } diff --git a/src/frontend/src/pages/1ds.js b/src/frontend/src/pages/1ds.js index aceb6412..3fc4c336 100644 --- a/src/frontend/src/pages/1ds.js +++ b/src/frontend/src/pages/1ds.js @@ -10,11 +10,11 @@ const charMap = { '\t': '\\t', '\0': '\\0', '\u2028': '\\u2028', - '\u2029': '\\u2029' + '\u2029': '\\u2029', }; function escapeUnsafeChars(str) { - return str.replace(/[<>\b\f\n\r\t\0\u2028\u2029/\\]/g, x => charMap[x]); + return str.replace(/[<>\b\f\n\r\t\0\u2028\u2029/\\]/g, (x) => charMap[x]); } export async function GET({ request }) { @@ -30,7 +30,7 @@ export async function GET({ request }) { return new Response(js, { headers: { 'Content-Type': 'application/javascript', - 'Cache-Control': 'public, max-age=60' + 'Cache-Control': 'public, max-age=60', }, }); } diff --git a/src/frontend/src/pages/rss.xml.js b/src/frontend/src/pages/rss.xml.js index 7d10b7cb..3540cb90 100644 --- a/src/frontend/src/pages/rss.xml.js +++ b/src/frontend/src/pages/rss.xml.js @@ -24,10 +24,11 @@ export async function GET(context) { const title = doc.data?.title ? String(doc.data.title) : String(doc.slug ?? ''); const description = doc.data.description; - const rawDate = doc.data?.lastUpdated ?? doc.data?.date ?? doc.data?.published ?? doc.data?.created; + const rawDate = + doc.data?.lastUpdated ?? doc.data?.date ?? doc.data?.published ?? doc.data?.created; const pubDate = toDate(rawDate); - const id = doc.id === "index" ? "" : doc.id; + const id = doc.id === 'index' ? '' : doc.id; return { title, diff --git a/src/frontend/src/prettier-plugins/prettier-plugin-starlight-steps.mjs b/src/frontend/src/prettier-plugins/prettier-plugin-starlight-steps.mjs new file mode 100644 index 00000000..f6249d20 --- /dev/null +++ b/src/frontend/src/prettier-plugins/prettier-plugin-starlight-steps.mjs @@ -0,0 +1,66 @@ +// This plugin tells Prettier not to format the children of in MDX/MD files. +import markdownParser from 'prettier/parser-markdown'; + +export const languages = [ + { + name: 'mdx', + parsers: ['mdx'], + }, +]; + +export const parsers = { + mdx: { + ...markdownParser.parsers.mdx, + + // Wrap the existing parse function + parse(text, parsers, options) { + const ast = markdownParser.parsers.mdx.parse(text, parsers, options); + + // Mark nodes so the printer can skip them + function walk(node) { + if (!node || typeof node !== 'object') return; + + // MDX JSX nodes appear as "mdxJsxFlowElement" + if (node.type === 'mdxJsxFlowElement' && node.name === 'Steps') { + node.__dontFormatChildren = true; + } + + for (const key in node) { + const val = node[key]; + if (Array.isArray(val)) val.forEach(walk); + else walk(val); + } + } + + walk(ast); + return ast; + }, + }, +}; + +export const printers = { + mdx: { + ...markdownParser.printers.mdx, + + print(path, options, print) { + const node = path.getValue(); + + // If it's and we marked it, return raw inner content + if ( + node?.type === 'mdxJsxFlowElement' && + node?.name === 'Steps' && + node.__dontFormatChildren + ) { + // Preserve original text exactly + const raw = options.originalText.slice( + node.position.start.offset, + node.position.end.offset + ); + + return raw; + } + + return markdownParser.printers.mdx.print(path, options, print); + }, + }, +}; diff --git a/src/frontend/src/styles/cookieconsent-custom.css b/src/frontend/src/styles/cookieconsent-custom.css index 62fc92df..c5823bd6 100644 --- a/src/frontend/src/styles/cookieconsent-custom.css +++ b/src/frontend/src/styles/cookieconsent-custom.css @@ -1,116 +1,117 @@ /* Cookie consent - https://playground.cookieconsent.orestbida.com/ */ #cc-main { - --cc-font-family: 'Poppins', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - --cc-modal-border-radius: 0.5rem; - --cc-btn-border-radius: 0.375rem; + --cc-font-family: + 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; + --cc-modal-border-radius: 0.5rem; + --cc-btn-border-radius: 0.375rem; } /* Light theme */ :root[data-theme='light'] #cc-main { - color-scheme: light; - --cc-bg: #FFFFFF; - --cc-primary-color: #1F1E33; - --cc-secondary-color: #55585f; - --cc-btn-primary-bg: #7455DD; - --cc-btn-primary-color: #ffffff; - --cc-btn-primary-border-color: #7455DD; - --cc-btn-primary-hover-bg: #512BD4; - --cc-btn-primary-hover-color: #ffffff; - --cc-btn-primary-hover-border-color: #512BD4; - --cc-btn-secondary-bg: transparent; - --cc-btn-secondary-color: #7455DD; - --cc-btn-secondary-border-color: #7455DD; - --cc-btn-secondary-hover-bg: rgba(116, 85, 221, 0.08); - --cc-btn-secondary-hover-color: #7455DD; - --cc-btn-secondary-hover-border-color: #7455DD; - --cc-toggle-on-bg: #7455DD; - --cc-toggle-off-bg: #c0c2c6; - --cc-toggle-on-knob-bg: #ffffff; - --cc-toggle-off-knob-bg: #55585f; - --cc-toggle-on-knob-icon-color: var(--cc-toggle-on-bg); - --cc-toggle-off-knob-icon-color: var(--cc-toggle-off-bg); - --cc-toggle-enabled-icon-color: var(--cc-bg); - --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); - --cc-toggle-readonly-bg: #d5d8db; - --cc-toggle-readonly-knob-bg: #969899; - --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); - --cc-section-category-border: #eceef1; - --cc-cookie-category-block-bg: transparent; - --cc-cookie-category-block-border: transparent; - --cc-cookie-category-block-hover-bg: rgba(116, 85, 221, 0.05); - --cc-cookie-category-block-hover-border: transparent; - --cc-cookie-category-expanded-block-bg: transparent; - --cc-cookie-category-expanded-block-hover-bg: rgba(116, 85, 221, 0.05); - --cc-separator-border-color: #eceef1; - --cc-overlay-bg: rgba(0, 0, 0, 0.1); - --cc-webkit-scrollbar-bg: var(--cc-section-category-border); - --cc-webkit-scrollbar-hover-bg: #7455DD; - --cc-footer-bg: #eceef1; - --cc-footer-color: var(--cc-secondary-color); - --cc-footer-border-color: var(--cc-section-category-border); + color-scheme: light; + --cc-bg: #ffffff; + --cc-primary-color: #1f1e33; + --cc-secondary-color: #55585f; + --cc-btn-primary-bg: #7455dd; + --cc-btn-primary-color: #ffffff; + --cc-btn-primary-border-color: #7455dd; + --cc-btn-primary-hover-bg: #512bd4; + --cc-btn-primary-hover-color: #ffffff; + --cc-btn-primary-hover-border-color: #512bd4; + --cc-btn-secondary-bg: transparent; + --cc-btn-secondary-color: #7455dd; + --cc-btn-secondary-border-color: #7455dd; + --cc-btn-secondary-hover-bg: rgba(116, 85, 221, 0.08); + --cc-btn-secondary-hover-color: #7455dd; + --cc-btn-secondary-hover-border-color: #7455dd; + --cc-toggle-on-bg: #7455dd; + --cc-toggle-off-bg: #c0c2c6; + --cc-toggle-on-knob-bg: #ffffff; + --cc-toggle-off-knob-bg: #55585f; + --cc-toggle-on-knob-icon-color: var(--cc-toggle-on-bg); + --cc-toggle-off-knob-icon-color: var(--cc-toggle-off-bg); + --cc-toggle-enabled-icon-color: var(--cc-bg); + --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-readonly-bg: #d5d8db; + --cc-toggle-readonly-knob-bg: #969899; + --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); + --cc-section-category-border: #eceef1; + --cc-cookie-category-block-bg: transparent; + --cc-cookie-category-block-border: transparent; + --cc-cookie-category-block-hover-bg: rgba(116, 85, 221, 0.05); + --cc-cookie-category-block-hover-border: transparent; + --cc-cookie-category-expanded-block-bg: transparent; + --cc-cookie-category-expanded-block-hover-bg: rgba(116, 85, 221, 0.05); + --cc-separator-border-color: #eceef1; + --cc-overlay-bg: rgba(0, 0, 0, 0.1); + --cc-webkit-scrollbar-bg: var(--cc-section-category-border); + --cc-webkit-scrollbar-hover-bg: #7455dd; + --cc-footer-bg: #eceef1; + --cc-footer-color: var(--cc-secondary-color); + --cc-footer-border-color: var(--cc-section-category-border); - .pm__badge { - font-weight: normal; - font-size: .7rem; - padding: .5rem .75rem; - background-color: color-mix(in srgb, var(--cc-btn-secondary-bg) 95%, black 5%); - } + .pm__badge { + font-weight: normal; + font-size: 0.7rem; + padding: 0.5rem 0.75rem; + background-color: color-mix(in srgb, var(--cc-btn-secondary-bg) 95%, black 5%); + } } /* Dark theme */ :root[data-theme='dark'] #cc-main { - color-scheme: dark; - --cc-bg: #1F1E33; - --cc-primary-color: #FFFFFF; - --cc-secondary-color: #c6c8cc; - --cc-btn-primary-bg: #7455DD; - --cc-btn-primary-color: #ffffff; - --cc-btn-primary-border-color: #7455DD; - --cc-btn-primary-hover-bg: #512BD4; - --cc-btn-primary-hover-color: #ffffff; - --cc-btn-primary-hover-border-color: #512BD4; - --cc-btn-secondary-bg: transparent; - --cc-btn-secondary-color: #c6c8cc; - --cc-btn-secondary-border-color: var(--cc-separator-border-color); - --cc-btn-secondary-hover-bg: rgba(116, 85, 221, 0.1); - --cc-btn-secondary-hover-color: #ffffff; - --cc-btn-secondary-hover-border-color: #c6c8cc; - --cc-toggle-on-bg: #7455DD; - --cc-toggle-off-bg: #55585f; - --cc-toggle-on-knob-bg: #ffffff; - --cc-toggle-off-knob-bg: #c6c8cc; - --cc-toggle-on-knob-icon-color: var(--cc-toggle-on-bg); - --cc-toggle-off-knob-icon-color: var(--cc-toggle-off-bg); - --cc-toggle-enabled-icon-color: var(--cc-btn-primary-color); - --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); - --cc-toggle-readonly-bg: #35383e; - --cc-toggle-readonly-knob-bg: #55585f; - --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); - --cc-section-category-border: #35383e; - --cc-cookie-category-block-bg: transparent; - --cc-cookie-category-block-border: transparent; - --cc-cookie-category-block-hover-bg: rgba(116, 85, 221, 0.1); - --cc-cookie-category-block-hover-border: transparent; - --cc-cookie-category-expanded-block-bg: transparent; - --cc-cookie-category-expanded-block-hover-bg: rgba(116, 85, 221, 0.1); - --cc-separator-border-color: #35383e; - --cc-overlay-bg: rgba(0, 0, 0, 0.1); - --cc-webkit-scrollbar-bg: var(--cc-section-category-border); - --cc-webkit-scrollbar-hover-bg: #7455DD; - --cc-footer-bg: #1a1828; - --cc-footer-color: var(--cc-secondary-color); - --cc-footer-border-color: var(--cc-section-category-border); + color-scheme: dark; + --cc-bg: #1f1e33; + --cc-primary-color: #ffffff; + --cc-secondary-color: #c6c8cc; + --cc-btn-primary-bg: #7455dd; + --cc-btn-primary-color: #ffffff; + --cc-btn-primary-border-color: #7455dd; + --cc-btn-primary-hover-bg: #512bd4; + --cc-btn-primary-hover-color: #ffffff; + --cc-btn-primary-hover-border-color: #512bd4; + --cc-btn-secondary-bg: transparent; + --cc-btn-secondary-color: #c6c8cc; + --cc-btn-secondary-border-color: var(--cc-separator-border-color); + --cc-btn-secondary-hover-bg: rgba(116, 85, 221, 0.1); + --cc-btn-secondary-hover-color: #ffffff; + --cc-btn-secondary-hover-border-color: #c6c8cc; + --cc-toggle-on-bg: #7455dd; + --cc-toggle-off-bg: #55585f; + --cc-toggle-on-knob-bg: #ffffff; + --cc-toggle-off-knob-bg: #c6c8cc; + --cc-toggle-on-knob-icon-color: var(--cc-toggle-on-bg); + --cc-toggle-off-knob-icon-color: var(--cc-toggle-off-bg); + --cc-toggle-enabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-readonly-bg: #35383e; + --cc-toggle-readonly-knob-bg: #55585f; + --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); + --cc-section-category-border: #35383e; + --cc-cookie-category-block-bg: transparent; + --cc-cookie-category-block-border: transparent; + --cc-cookie-category-block-hover-bg: rgba(116, 85, 221, 0.1); + --cc-cookie-category-block-hover-border: transparent; + --cc-cookie-category-expanded-block-bg: transparent; + --cc-cookie-category-expanded-block-hover-bg: rgba(116, 85, 221, 0.1); + --cc-separator-border-color: #35383e; + --cc-overlay-bg: rgba(0, 0, 0, 0.1); + --cc-webkit-scrollbar-bg: var(--cc-section-category-border); + --cc-webkit-scrollbar-hover-bg: #7455dd; + --cc-footer-bg: #1a1828; + --cc-footer-color: var(--cc-secondary-color); + --cc-footer-border-color: var(--cc-section-category-border); - .pm__badge { - font-weight: normal; - font-size: .7rem; - padding: .5rem .75rem; - background-color: color-mix(in srgb, var(--cc-btn-secondary-bg) 95%, white 5%); - } + .pm__badge { + font-weight: normal; + font-size: 0.7rem; + padding: 0.5rem 0.75rem; + background-color: color-mix(in srgb, var(--cc-btn-secondary-bg) 95%, white 5%); + } } #cc-main .cm, #cc-main .pm { - border: 1px solid var(--cc-separator-border-color); -} \ No newline at end of file + border: 1px solid var(--cc-separator-border-color); +} diff --git a/src/frontend/src/styles/site.css b/src/frontend/src/styles/site.css index d0d315f8..1490be69 100644 --- a/src/frontend/src/styles/site.css +++ b/src/frontend/src/styles/site.css @@ -7,220 +7,220 @@ @import './cookieconsent-custom.css'; :root { - --aspire-color-purple: #512BD4; - --aspire-color-primary: #7455DD; - --aspire-color-black: #1F1E33; - --aspire-color-secondary: #B9AAEE; - --aspire-color-grey: #DCE0E8; - --aspire-color-muted: #DCD5F6; - --aspire-color-white: #FFFFFF; - - --sl-font-system: "Poppins", sans-serif; - --ec-codeFontFmly: 'Fira Code Variable', monospace; - --sl-font-system-mono: 'Fira Code Variable', monospace; - --font-heading: var(--sl-font-system); - - --sl-color-accent-low: #231d41; - --sl-color-accent: var(--aspire-color-primary); - --sl-color-accent-high: #c6c2f2; - --sl-color-white: var(--aspire-color-white); - --sl-color-gray-1: #eceef1; - --sl-color-gray-2: #c6c8cc; - --sl-color-gray-3: #a0a4ab; - --sl-color-gray-4: #55585f; - --sl-color-gray-5: #35383e; - --sl-color-gray-6: #24272d; - --sl-color-black: var(--aspire-color-black); - - --sl-color-bg: var(--aspire-color-black) !important; - --sl-color-text: var(--aspire-color-white) !important; - - --aspire-color: #7455DD; - --aspire-color-light: #DCD5F6; - --color-dotnet-purple: #2c256b; - - --color-purple: var(--aspire-color-primary); - --color-magenta: #D600AA; - --color-flamingo: #F65163; - --color-blue: #0078D7; - --color-cyan: #28C2D1; - - --gradient-purple-magenta: linear-gradient(90deg, var(--color-purple), var(--color-magenta)); - --gradient-magenta-flamingo: linear-gradient(90deg, var(--color-magenta), var(--color-flamingo)); - --gradient-flamingo-purple: linear-gradient(90deg, var(--color-flamingo), var(--color-purple)); - --gradient-purple-blue: linear-gradient(90deg, var(--color-purple), var(--color-blue)); - --gradient-blue-purple: linear-gradient(90deg, var(--color-blue), var(--color-purple)); - - .sl-link-button.primary { - color: var(--sl-color-text); - --sl-color-text-accent: var(--aspire-color); - } - - .sl-link-button.secondary { - background-color: var(--sl-color-bg); - } - - --sl-color-text-accent: var(--aspire-color-secondary); - - .site-title span { - color: var(--aspire-color-light); - } - - .sl-link-card .description { - color: var(--sl-color-gray-1); - } - - .sl-banner { - background-color: var(--aspire-color-secondary); - } - - .starlight-aside .starlight-aside--note>.starlight-aside__title { - color: var(--sl-color-blue); - } - - aside.starlight-aside.starlight-aside--tip>.starlight-aside__title { - color: var(--sl-color-purple); - } - - aside.starlight-aside.starlight-aside--caution>.starlight-aside__title { - color: var(--sl-color-orange); - } - - aside.starlight-aside.starlight-aside--danger>.starlight-aside__title { - color: var(--sl-color-red) - } - - .starlight-aside__content a:not([role="tab"]) { - background-color: color-mix(in srgb, var(--sl-color-bg) 90%, var(--sl-color-white)); - } - - .starlight-aside__content li.tab [role="tab"][aria-selected="false"] { - color: var(--sl-color-gray-2); - } + --aspire-color-purple: #512bd4; + --aspire-color-primary: #7455dd; + --aspire-color-black: #1f1e33; + --aspire-color-secondary: #b9aaee; + --aspire-color-grey: #dce0e8; + --aspire-color-muted: #dcd5f6; + --aspire-color-white: #ffffff; + + --sl-font-system: 'Poppins', sans-serif; + --ec-codeFontFmly: 'Fira Code Variable', monospace; + --sl-font-system-mono: 'Fira Code Variable', monospace; + --font-heading: var(--sl-font-system); + + --sl-color-accent-low: #231d41; + --sl-color-accent: var(--aspire-color-primary); + --sl-color-accent-high: #c6c2f2; + --sl-color-white: var(--aspire-color-white); + --sl-color-gray-1: #eceef1; + --sl-color-gray-2: #c6c8cc; + --sl-color-gray-3: #a0a4ab; + --sl-color-gray-4: #55585f; + --sl-color-gray-5: #35383e; + --sl-color-gray-6: #24272d; + --sl-color-black: var(--aspire-color-black); + + --sl-color-bg: var(--aspire-color-black) !important; + --sl-color-text: var(--aspire-color-white) !important; + + --aspire-color: #7455dd; + --aspire-color-light: #dcd5f6; + --color-dotnet-purple: #2c256b; + + --color-purple: var(--aspire-color-primary); + --color-magenta: #d600aa; + --color-flamingo: #f65163; + --color-blue: #0078d7; + --color-cyan: #28c2d1; + + --gradient-purple-magenta: linear-gradient(90deg, var(--color-purple), var(--color-magenta)); + --gradient-magenta-flamingo: linear-gradient(90deg, var(--color-magenta), var(--color-flamingo)); + --gradient-flamingo-purple: linear-gradient(90deg, var(--color-flamingo), var(--color-purple)); + --gradient-purple-blue: linear-gradient(90deg, var(--color-purple), var(--color-blue)); + --gradient-blue-purple: linear-gradient(90deg, var(--color-blue), var(--color-purple)); + + .sl-link-button.primary { + color: var(--sl-color-text); + --sl-color-text-accent: var(--aspire-color); + } + + .sl-link-button.secondary { + background-color: var(--sl-color-bg); + } + + --sl-color-text-accent: var(--aspire-color-secondary); + + .site-title span { + color: var(--aspire-color-light); + } + + .sl-link-card .description { + color: var(--sl-color-gray-1); + } + + .sl-banner { + background-color: var(--aspire-color-secondary); + } + + .starlight-aside .starlight-aside--note > .starlight-aside__title { + color: var(--sl-color-blue); + } + + aside.starlight-aside.starlight-aside--tip > .starlight-aside__title { + color: var(--sl-color-purple); + } + + aside.starlight-aside.starlight-aside--caution > .starlight-aside__title { + color: var(--sl-color-orange); + } + + aside.starlight-aside.starlight-aside--danger > .starlight-aside__title { + color: var(--sl-color-red); + } + + .starlight-aside__content a:not([role='tab']) { + background-color: color-mix(in srgb, var(--sl-color-bg) 90%, var(--sl-color-white)); + } + + .starlight-aside__content li.tab [role='tab'][aria-selected='false'] { + color: var(--sl-color-gray-2); + } } :root[data-theme='light'] { - --sl-color-accent-low: #d5d2f6; - --sl-color-accent: var(--aspire-color-primary); - --sl-color-accent-high: #322660; - --sl-color-white: var(--aspire-color-black); - --sl-color-gray-1: #24272d; - --sl-color-gray-2: #35383e; - --sl-color-gray-3: #55585f; - --sl-color-gray-4: #888c93; - --sl-color-gray-5: #c0c2c6; - --sl-color-gray-6: #eceef1; - --sl-color-gray-7: #f5f6f8; - --sl-color-black: var(--aspire-color-white); - - --sl-color-bg: var(--aspire-color-white) !important; - --sl-color-text: var(--aspire-color-black) !important; - - --gradient-purple-magenta: linear-gradient(90deg, var(--color-purple), var(--color-magenta)); - --gradient-magenta-flamingo: linear-gradient(90deg, var(--color-magenta), var(--color-flamingo)); - --gradient-flamingo-purple: linear-gradient(90deg, var(--color-flamingo), var(--color-purple)); - --gradient-purple-cyan: linear-gradient(90deg, var(--color-purple), var(--color-cyan)); - --gradient-cyan-purple: linear-gradient(90deg, var(--color-cyan), var(--color-purple)); - - .sl-link-button.primary { - color: var(--aspire-color-white); - --sl-color-text-accent: var(--aspire-color); - } - - --sl-color-text-accent: var(--aspire-color-primary); - - .site-title span { - color: var(--aspire-color); - } - - aside.starlight-aside.starlight-aside--note>.starlight-aside__title { - color: var(--sl-color-blue); - } - - aside.starlight-aside.starlight-aside--tip>.starlight-aside__title { - color: var(--sl-color-purple); - } - - aside.starlight-aside.starlight-aside--caution>.starlight-aside__title { - color: #ab3f00; - } - - aside.starlight-aside.starlight-aside--danger>.starlight-aside__title { - color: var(--sl-color-red); - } - - .starlight-aside__content a:not([role="tab"]) { - background-color: color-mix(in srgb, var(--sl-color-bg) 90%, var(--sl-color-black)); - } - - .sl-markdown-content a code { - color: var(--aspire-color-purple); - } - - .sl-banner { - background-color: var(--aspire-color-primary); - } - - li.tab [role="tab"][aria-selected="false"] { - color: var(--sl-color-gray-2); - } - - .starlight-aside__content li.tab [role="tab"][aria-selected="false"] { - color: #575a71; - } + --sl-color-accent-low: #d5d2f6; + --sl-color-accent: var(--aspire-color-primary); + --sl-color-accent-high: #322660; + --sl-color-white: var(--aspire-color-black); + --sl-color-gray-1: #24272d; + --sl-color-gray-2: #35383e; + --sl-color-gray-3: #55585f; + --sl-color-gray-4: #888c93; + --sl-color-gray-5: #c0c2c6; + --sl-color-gray-6: #eceef1; + --sl-color-gray-7: #f5f6f8; + --sl-color-black: var(--aspire-color-white); + + --sl-color-bg: var(--aspire-color-white) !important; + --sl-color-text: var(--aspire-color-black) !important; + + --gradient-purple-magenta: linear-gradient(90deg, var(--color-purple), var(--color-magenta)); + --gradient-magenta-flamingo: linear-gradient(90deg, var(--color-magenta), var(--color-flamingo)); + --gradient-flamingo-purple: linear-gradient(90deg, var(--color-flamingo), var(--color-purple)); + --gradient-purple-cyan: linear-gradient(90deg, var(--color-purple), var(--color-cyan)); + --gradient-cyan-purple: linear-gradient(90deg, var(--color-cyan), var(--color-purple)); + + .sl-link-button.primary { + color: var(--aspire-color-white); + --sl-color-text-accent: var(--aspire-color); + } + + --sl-color-text-accent: var(--aspire-color-primary); + + .site-title span { + color: var(--aspire-color); + } + + aside.starlight-aside.starlight-aside--note > .starlight-aside__title { + color: var(--sl-color-blue); + } + + aside.starlight-aside.starlight-aside--tip > .starlight-aside__title { + color: var(--sl-color-purple); + } + + aside.starlight-aside.starlight-aside--caution > .starlight-aside__title { + color: #ab3f00; + } + + aside.starlight-aside.starlight-aside--danger > .starlight-aside__title { + color: var(--sl-color-red); + } + + .starlight-aside__content a:not([role='tab']) { + background-color: color-mix(in srgb, var(--sl-color-bg) 90%, var(--sl-color-black)); + } + + .sl-markdown-content a code { + color: var(--aspire-color-purple); + } + + .sl-banner { + background-color: var(--aspire-color-primary); + } + + li.tab [role='tab'][aria-selected='false'] { + color: var(--sl-color-gray-2); + } + + .starlight-aside__content li.tab [role='tab'][aria-selected='false'] { + color: #575a71; + } } .starlight-aside { - color: var(--sl-color-text); + color: var(--sl-color-text); } -.starlight-aside__content a:not([role="tab"]) { - padding: 0.125rem 0.375rem; - border-radius: .25rem; +.starlight-aside__content a:not([role='tab']) { + padding: 0.125rem 0.375rem; + border-radius: 0.25rem; } .sl-markdown-content code:not(:where(.not-content *)) { - font-size: var(--sl-text-body); + font-size: var(--sl-text-body); } .poppins-light { - font-family: "Poppins", sans-serif; - font-weight: 300; - font-style: normal; + font-family: 'Poppins', sans-serif; + font-weight: 300; + font-style: normal; } .poppins-regular { - font-family: "Poppins", sans-serif; - font-weight: 400; - font-style: normal; + font-family: 'Poppins', sans-serif; + font-weight: 400; + font-style: normal; } .poppins-medium { - font-family: "Poppins", sans-serif; - font-weight: 500; - font-style: normal; + font-family: 'Poppins', sans-serif; + font-weight: 500; + font-style: normal; } .poppins-semibold { - font-family: "Poppins", sans-serif; - font-weight: 600; - font-style: normal; + font-family: 'Poppins', sans-serif; + font-weight: 600; + font-style: normal; } .poppins-bold { - font-family: "Poppins", sans-serif; - font-weight: 700; - font-style: normal; + font-family: 'Poppins', sans-serif; + font-weight: 700; + font-style: normal; } -pre[data-language="bash"]>code, -pre[data-language="powershell"]>code, -pre[data-language="console"]>code { - line-height: initial; +pre[data-language='bash'] > code, +pre[data-language='powershell'] > code, +pre[data-language='console'] > code { + line-height: initial; } -pre.mermaid[data-processed=true] { - border: 1px solid var(--sl-color-gray-5); +pre.mermaid[data-processed='true'] { + border: 1px solid var(--sl-color-gray-5); } /* pre.mermaid[data-processed=true] svg g svg { @@ -228,102 +228,104 @@ pre.mermaid[data-processed=true] { } */ .sl-markdown-content code { - border-radius: .25rem; + border-radius: 0.25rem; } .sl-markdown-content :is(h1, h2, h3, h4, h5, h6) code:not(:where(.not-content *)) { - font-size: inherit; + font-size: inherit; } -.sl-markdown-content a>code { - white-space: pre; +.sl-markdown-content a > code { + white-space: pre; } .float-inline-left { - float: left; - margin-right: 1rem; - margin-bottom: 0.5rem; + float: left; + margin-right: 1rem; + margin-bottom: 0.5rem; } aside { - border-radius: .5rem; + border-radius: 0.5rem; } .mb-1 { - margin-bottom: 1rem; + margin-bottom: 1rem; } starlight-file-tree { - border-radius: .5rem; - box-shadow: var(--sl-shadow-sm); - font-size: var(--sl-text-body); + border-radius: 0.5rem; + box-shadow: var(--sl-shadow-sm); + font-size: var(--sl-text-body); } starlight-file-tree .comment { - color: var(--sl-color-green-high); + color: var(--sl-color-green-high); } html[data-theme='light'] starlight-file-tree .comment { - color: #1e7834; + color: #1e7834; } starlight-file-tree .comment::before { - content: '# '; - display: inline-block; - font-size: 1em; - line-height: 1; - vertical-align: middle; - transform: scale(1.25); - transform-origin: center; + content: '# '; + display: inline-block; + font-size: 1em; + line-height: 1; + vertical-align: middle; + transform: scale(1.25); + transform-origin: center; } -starlight-file-tree .directory>details>summary::marker, -starlight-file-tree .directory>details>summary::-webkit-details-marker { - display: none !important; +starlight-file-tree .directory > details > summary::marker, +starlight-file-tree .directory > details > summary::-webkit-details-marker { + display: none !important; } -starlight-file-tree .directory>details>summary { - list-style: none; +starlight-file-tree .directory > details > summary { + list-style: none; } -starlight-file-tree .directory>details>summary::-webkit-details-marker { - display: none !important; +starlight-file-tree .directory > details > summary::-webkit-details-marker { + display: none !important; } -starlight-file-tree .directory>details>summary::before { - content: ""; - display: inline-block; - width: 1.25em; - height: 1.25em; - margin-right: 0.25em; - vertical-align: middle; - background-color: currentColor; - transition: transform 0.25s ease; - -webkit-mask: no-repeat center / contain url("data:image/svg+xml;utf8,"); - mask: no-repeat center / contain url("data:image/svg+xml;utf8,"); +starlight-file-tree .directory > details > summary::before { + content: ''; + display: inline-block; + width: 1.25em; + height: 1.25em; + margin-right: 0.25em; + vertical-align: middle; + background-color: currentColor; + transition: transform 0.25s ease; + -webkit-mask: no-repeat center / contain + url("data:image/svg+xml;utf8,"); + mask: no-repeat center / contain + url("data:image/svg+xml;utf8,"); } -starlight-file-tree .directory>details[open]>summary::before { - transform: rotate(90deg); +starlight-file-tree .directory > details[open] > summary::before { + transform: rotate(90deg); } #starlight__sidebar ul.top-level li a { - font-size: var(--sl-text-md); + font-size: var(--sl-text-md); } #starlight__sidebar ul.top-level li details ul li { - font-size: var(--sl-text-sm) !important; + font-size: var(--sl-text-sm) !important; } footer .meta, footer .meta a { - color: var(--sl-color-gray-2); + color: var(--sl-color-gray-2); } .bordered.shadowed { - border: 1px solid var(--sl-color-gray-5); - box-shadow: var(--sl-shadow-sm); - border-radius: .5rem; + border: 1px solid var(--sl-color-gray-5); + box-shadow: var(--sl-shadow-sm); + border-radius: 0.5rem; } h1, @@ -335,548 +337,553 @@ h6, .hero #_top, .tagline, .site-title { - font-family: var(--font-heading); - font-weight: 600; - color: var(--sl-color-text); + font-family: var(--font-heading); + font-weight: 600; + color: var(--sl-color-text); } .sl-link-button { - font-family: var(--font-heading); - font-weight: 600; + font-family: var(--font-heading); + font-weight: 600; } a:not(:disabled):hover, select:not(:disabled) option:not(:disabled):hover { - cursor: pointer !important; + cursor: pointer !important; } a:not(:disabled):hover { - filter: brightness(90%); + filter: brightness(90%); } .sl-link-card:hover { - cursor: pointer; + cursor: pointer; } video { - border-radius: 0.5rem; + border-radius: 0.5rem; } starlight-image-zoom-zoomable img { - border-radius: 0.5rem; - border: 1px solid var(--sl-color-gray-5); - transition: all 0.5s ease-in-out; + border-radius: 0.5rem; + border: 1px solid var(--sl-color-gray-5); + transition: all 0.5s ease-in-out; } starlight-image-zoom-zoomable img:not(details *) { - box-shadow: var(--sl-shadow-sm); + box-shadow: var(--sl-shadow-sm); } img.icon.sm { - padding: 1rem; - max-height: 6rem; - max-width: 6rem; + padding: 1rem; + max-height: 6rem; + max-width: 6rem; } img.icon.md { - padding: 1rem; - max-height: 8rem; - max-width: 6rem; + padding: 1rem; + max-height: 8rem; + max-width: 6rem; } img.icon.small { - padding: 1rem; - max-height: 10rem; - max-width: 10rem; + padding: 1rem; + max-height: 10rem; + max-width: 10rem; } .starlight-image-zoom-dialog figure img { - border-radius: 0.5rem; - border: 1px solid var(--sl-color-gray-5); + border-radius: 0.5rem; + border: 1px solid var(--sl-color-gray-5); } .map starlight-image-zoom-zoomable img { - box-shadow: none; + box-shadow: none; } .hero * { - z-index: 2; + z-index: 2; } -:root[data-theme="light"] .hero #_top { - font-size: var(--sl-text-2xl); - background: var(--aspire-color-primary); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; +:root[data-theme='light'] .hero #_top { + font-size: var(--sl-text-2xl); + background: var(--aspire-color-primary); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; } -:root[data-theme="dark"] .hero #_top { - font-size: var(--sl-text-2xl); - background: var(--aspire-color-secondary); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; +:root[data-theme='dark'] .hero #_top { + font-size: var(--sl-text-2xl); + background: var(--aspire-color-secondary); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; } .hero .tagline { - font-size: 4rem; + font-size: 4rem; } .hero .actions { - gap: 1.25rem; + gap: 1.25rem; } .rounded { - border-radius: .5rem; + border-radius: 0.5rem; } article.card { - border-radius: .5rem; + border-radius: 0.5rem; } figure.frame { - box-shadow: var(--sl-shadow-md); + box-shadow: var(--sl-shadow-md); } /* Ensure copy button has accessible text for screen readers */ .expressive-code .copy button { - /* The aria-label should be set by expressive-code config */ - min-width: 1rem; - min-height: 1rem; + /* The aria-label should be set by expressive-code config */ + min-width: 1rem; + min-height: 1rem; } @media (max-width: 72rem) { - .expressive-code .copy button:not([data-disable-copy]) { - width: 2rem; - height: 2rem; - } + .expressive-code .copy button:not([data-disable-copy]) { + width: 2rem; + height: 2rem; + } } @media (max-width: 1280px) { - .expressive-code .copy button:not([data-disable-copy]) { - width: 2rem; - height: 2rem; - } + .expressive-code .copy button:not([data-disable-copy]) { + width: 2rem; + height: 2rem; + } } /* Show copy button on mobile for better accessibility */ @media (max-width: 768px) { - .expressive-code .copy button:not([data-disable-copy]) { - opacity: 1; - visibility: visible; - } -} - -:root:has(meta[name="page"][content="404"]) #_top { - font-size: 12rem; - font-weight: 900; - background: var(--aspire-color); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - text-align: center; - line-height: 0.9; - transition: transform 0.3s ease; - border-bottom: .5rem solid var(--aspire-color-secondary); - padding-bottom: .15rem; - margin-bottom: 1.15rem; -} - -:root:has(meta[name="page"][content="404"]) .hero .sl-markdown-content { - padding: 0; - margin: 0; -} - -:root:has(meta[name="page"][content="404"]) #_top { - transition: all 0.5s ease-out; -} - -:root:has(meta[name="page"][content="404"]) #_top:hover { - background: linear-gradient(90deg, - var(--aspire-color) 0%, - var(--aspire-color-black) 50%, - var(--aspire-color) 100%); - background-size: 200% 100%; - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: shimmer 3s ease-in-out infinite; - transition: all 0.8s ease-in; -} - -:root[data-theme="dark"]:has(meta[name="page"][content="404"]) #_top:hover { - background: linear-gradient(90deg, - var(--aspire-color) 0%, - var(--aspire-color-white) 50%, - var(--aspire-color) 100%); - background-size: 200% 100%; - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: shimmer 3s ease-in-out infinite; - transition: all 0.8s ease-in; + .expressive-code .copy button:not([data-disable-copy]) { + opacity: 1; + visibility: visible; + } +} + +:root:has(meta[name='page'][content='404']) #_top { + font-size: 12rem; + font-weight: 900; + background: var(--aspire-color); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + text-align: center; + line-height: 0.9; + transition: transform 0.3s ease; + border-bottom: 0.5rem solid var(--aspire-color-secondary); + padding-bottom: 0.15rem; + margin-bottom: 1.15rem; +} + +:root:has(meta[name='page'][content='404']) .hero .sl-markdown-content { + padding: 0; + margin: 0; +} + +:root:has(meta[name='page'][content='404']) #_top { + transition: all 0.5s ease-out; +} + +:root:has(meta[name='page'][content='404']) #_top:hover { + background: linear-gradient( + 90deg, + var(--aspire-color) 0%, + var(--aspire-color-black) 50%, + var(--aspire-color) 100% + ); + background-size: 200% 100%; + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + animation: shimmer 3s ease-in-out infinite; + transition: all 0.8s ease-in; +} + +:root[data-theme='dark']:has(meta[name='page'][content='404']) #_top:hover { + background: linear-gradient( + 90deg, + var(--aspire-color) 0%, + var(--aspire-color-white) 50%, + var(--aspire-color) 100% + ); + background-size: 200% 100%; + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + animation: shimmer 3s ease-in-out infinite; + transition: all 0.8s ease-in; } @keyframes shimmer { - 0% { - background-position: -200% 0; - } + 0% { + background-position: -200% 0; + } - 50% { - background-position: 200% 0; - } + 50% { + background-position: 200% 0; + } - 100% { - background-position: -200% 0; - } + 100% { + background-position: -200% 0; + } } -:root:has(meta[name="page"][content="404"]) .tagline { - font-size: 2rem; - width: 40rem; - font-weight: 400; - padding: 0rem; +:root:has(meta[name='page'][content='404']) .tagline { + font-size: 2rem; + width: 40rem; + font-weight: 400; + padding: 0rem; } -:root:has(meta[name="page"][content="404"]) .tagline::before { - content: "👀"; - display: inline-block; - /* needed for transform animations */ - margin-right: 0.5ch; - animation: blink-bounce 5s infinite; +:root:has(meta[name='page'][content='404']) .tagline::before { + content: '👀'; + display: inline-block; + /* needed for transform animations */ + margin-right: 0.5ch; + animation: blink-bounce 5s infinite; } /* Keyframes: quick squish (blink), then a gentle bounce with random flips */ @keyframes blink-bounce { + 0%, + 15%, + 85%, + 100% { + transform: scaleY(1) translateY(0) scaleX(1); + } - 0%, - 15%, - 85%, - 100% { - transform: scaleY(1) translateY(0) scaleX(1); - } + 7.5% { + transform: scaleY(0.1) translateY(0) scaleX(-1); + /* quick blink - squish vertically and flip */ + } - 7.5% { - transform: scaleY(0.1) translateY(0) scaleX(-1); - /* quick blink - squish vertically and flip */ - } + 25% { + transform: scaleY(1.1) translateY(-2px) scaleX(1); + /* slight bounce after blink */ + } - 25% { - transform: scaleY(1.1) translateY(-2px) scaleX(1); - /* slight bounce after blink */ - } + 35% { + transform: scaleY(0.95) translateY(1px) scaleX(-1); + /* settle down and flip */ + } - 35% { - transform: scaleY(0.95) translateY(1px) scaleX(-1); - /* settle down and flip */ - } - - 45% { - transform: scaleY(1) translateY(0) scaleX(1); - /* back to normal */ - } + 45% { + transform: scaleY(1) translateY(0) scaleX(1); + /* back to normal */ + } } -:root:has(meta[name="page"][content="404"]) .sl-link-button { - font-size: 1.5rem; - padding: .75rem 1.5rem; +:root:has(meta[name='page'][content='404']) .sl-link-button { + font-size: 1.5rem; + padding: 0.75rem 1.5rem; } .hero .sl-link-button:hover { - transform: translateY(-10%); + transform: translateY(-10%); } -.hero>img { - max-width: 100%; - max-height: 15rem; - height: auto; +.hero > img { + max-width: 100%; + max-height: 15rem; + height: auto; } .starlight-sidebar-topics { - list-style: none; - margin: 0 0 1rem 0; - padding: 0.25rem; - border: 1px solid var(--sl-color-hairline-light); - border-radius: 0.75rem; - background: var(--sl-color-bg); - display: flex; - flex-direction: column; - gap: 0.1rem; + list-style: none; + margin: 0 0 1rem 0; + padding: 0.25rem; + border: 1px solid var(--sl-color-hairline-light); + border-radius: 0.75rem; + background: var(--sl-color-bg); + display: flex; + flex-direction: column; + gap: 0.1rem; } .starlight-sidebar-topics li { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } .starlight-sidebar-topics::after { - content: none; - border: none; + content: none; + border: none; } .starlight-sidebar-topics a { - display: flex; - align-items: center; - gap: 0.5rem; - border-radius: 0.5rem; - text-decoration: none; - color: var(--sl-color-text); - font-weight: 600; - transition: all 0.15s; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 0.5rem; + text-decoration: none; + color: var(--sl-color-text); + font-weight: 600; + transition: all 0.15s; } .starlight-sidebar-topics a:hover, .starlight-sidebar-topics a:focus-visible { - background: var(--sl-color-gray-4); - color: var(--sl-color-white); + background: var(--sl-color-gray-4); + color: var(--sl-color-white); } .starlight-sidebar-topics-current, .starlight-sidebar-topics a.starlight-sidebar-topics-current { - background: var(--sl-color-bg-nav); - border: 1px solid var(--sl-color-gray-5); - color: var(--sl-color-accent-high); + background: var(--sl-color-bg-nav); + border: 1px solid var(--sl-color-gray-5); + color: var(--sl-color-accent-high); } .starlight-sidebar-topics-icon { - width: 2rem; - height: 2rem; - display: flex; - align-items: center; - justify-content: center; - margin-right: 0.25rem; - border: none !important; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + margin-right: 0.25rem; + border: none !important; } .starlight-sidebar-topics a:hover .starlight-sidebar-topics-icon, .starlight-sidebar-topics a:focus-visible .starlight-sidebar-topics-icon { - color: var(--sl-color-white); - background: initial; + color: var(--sl-color-white); + background: initial; } .starlight-sidebar-topics a.starlight-sidebar-topics-current .starlight-sidebar-topics-icon { - color: var(--sl-color-accent-high); - background: initial; + color: var(--sl-color-accent-high); + background: initial; } .card-grid .card .icon { - width: 2rem; - height: 2rem; - flex-shrink: 0; + width: 2rem; + height: 2rem; + flex-shrink: 0; } .card-grid .card .icon svg { - width: 100%; - height: 100%; + width: 100%; + height: 100%; } .sl-card .sl-card-icon, .card .icon, [data-icon] { - width: 2rem !important; - height: 2rem !important; - min-width: 2rem; - min-height: 2rem; + width: 2rem !important; + height: 2rem !important; + min-width: 2rem; + min-height: 2rem; } :root[data-theme='light'] { - .starlight-sidebar-topics { - background: var(--sl-color-bg-nav); - border: 1px solid var(--sl-color-gray-6); - } + .starlight-sidebar-topics { + background: var(--sl-color-bg-nav); + border: 1px solid var(--sl-color-gray-6); + } - .starlight-sidebar-topics a { - color: var(--sl-color-white); - } + .starlight-sidebar-topics a { + color: var(--sl-color-white); + } - .starlight-sidebar-topics a:hover, - .starlight-sidebar-topics a:focus-visible { - background: var(--sl-color-gray-4); - } + .starlight-sidebar-topics a:hover, + .starlight-sidebar-topics a:focus-visible { + background: var(--sl-color-gray-4); + } - .starlight-sidebar-topics-current, - .starlight-sidebar-topics a.starlight-sidebar-topics-current { - background: var(--sl-color-black); - border: 1px solid var(--sl-color-gray-4); - color: var(--sl-color-accent); - } + .starlight-sidebar-topics-current, + .starlight-sidebar-topics a.starlight-sidebar-topics-current { + background: var(--sl-color-black); + border: 1px solid var(--sl-color-gray-4); + color: var(--sl-color-accent); + } - /* Link hover effects */ - a:hover { - filter: brightness(110%); - } + /* Link hover effects */ + a:hover { + filter: brightness(110%); + } } /* Hero page specific styling */ :root[data-has-hero] { - .sl-markdown-content>.sl-heading-wrapper { - margin-top: 5rem; - scroll-margin-top: 6rem; - } - - .sl-markdown-content>.languages-supported+p, - .sl-markdown-content>.sl-heading-wrapper+p { - max-width: 80%; - } - - .header { - border: none; - } - - .tagline { - font-size: 4rem; - line-height: 1.2; - } - - .tagline p { - font-size: 1rem; - line-height: 1.5; - font-weight: initial; - margin-top: .75rem; - margin-bottom: 1.25rem; - } - - .sl-markdown-content { - margin-top: 0rem; - } - - .sl-link-button { - font-size: 1rem; - padding: .75rem 1.5rem; - } - - @media (max-width: 768px) { - .hero .tagline { - font-size: 2.5rem; - } - - .tagline p { - font-size: 1.25rem; - max-width: 100%; - line-height: initial; - font-weight: initial; - margin-top: .75rem; - margin-bottom: 1.25rem; - } - - .sl-link-button { - font-size: 1.25rem; - padding: .75rem 1.5rem; - } - - .sl-markdown-content>.languages-supported+p, - .sl-markdown-content>.sl-heading-wrapper+p { - max-width: 100%; - } - - .hero .sl-link-button { - font-size: 1rem; - padding: 1rem 1.5rem; - } - } -} - -:root[data-has-hero][data-theme="light"] { - --sl-color-text: var(--aspire-color-black); - --sl-color-bg: var(--aspire-color-white); - - header.header { - --sl-color-bg-nav: var(--aspire-color-white); - } - - .tagline { - color: var(--aspire-color-black); - } -} - -:root[data-has-hero][data-theme="dark"] { - --sl-color-text: var(--aspire-color-white); - --sl-color-bg: var(--aspire-color-black); - - header.header { - --sl-color-bg-nav: var(--aspire-color-black); - } - - .tagline { - color: var(--aspire-color-white); - } + .sl-markdown-content > .sl-heading-wrapper { + margin-top: 5rem; + scroll-margin-top: 6rem; + } + + .sl-markdown-content > .languages-supported + p, + .sl-markdown-content > .sl-heading-wrapper + p { + max-width: 80%; + } + + .header { + border: none; + } + + .tagline { + font-size: 4rem; + line-height: 1.2; + } + + .tagline p { + font-size: 1rem; + line-height: 1.5; + font-weight: initial; + margin-top: 0.75rem; + margin-bottom: 1.25rem; + } + + .sl-markdown-content { + margin-top: 0rem; + } + + .sl-link-button { + font-size: 1rem; + padding: 0.75rem 1.5rem; + } + + @media (max-width: 768px) { + .hero .tagline { + font-size: 2.5rem; + } + + .tagline p { + font-size: 1.25rem; + max-width: 100%; + line-height: initial; + font-weight: initial; + margin-top: 0.75rem; + margin-bottom: 1.25rem; + } + + .sl-link-button { + font-size: 1.25rem; + padding: 0.75rem 1.5rem; + } + + .sl-markdown-content > .languages-supported + p, + .sl-markdown-content > .sl-heading-wrapper + p { + max-width: 100%; + } + + .hero .sl-link-button { + font-size: 1rem; + padding: 1rem 1.5rem; + } + } +} + +:root[data-has-hero][data-theme='light'] { + --sl-color-text: var(--aspire-color-black); + --sl-color-bg: var(--aspire-color-white); + + header.header { + --sl-color-bg-nav: var(--aspire-color-white); + } + + .tagline { + color: var(--aspire-color-black); + } +} + +:root[data-has-hero][data-theme='dark'] { + --sl-color-text: var(--aspire-color-white); + --sl-color-bg: var(--aspire-color-black); + + header.header { + --sl-color-bg-nav: var(--aspire-color-black); + } + + .tagline { + color: var(--aspire-color-white); + } } .d-inline { - display: inline; + display: inline; } #scroll-to-top-button { - background: var(--aspire-color-primary); + background: var(--aspire-color-primary); } #scroll-to-top-button:hover { - background: var(--aspire-color-secondary); - border-color: var(--aspire-color-primary); - box-shadow: var(--sl-shadow-lg); - color: initial; + background: var(--aspire-color-secondary); + border-color: var(--aspire-color-primary); + box-shadow: var(--sl-shadow-lg); + color: initial; } /* Optional: help alignment if anchors are flex/inline elements */ li a.external-link { - /* remove this if it interferes with your layout */ - align-items: center; + /* remove this if it interferes with your layout */ + align-items: center; } /* external link icon (uses mask so the icon inherits currentColor) */ li a.external-link::after { - content: ""; - display: inline-block; - width: 0.8em; - height: 0.8em; - margin-left: 0.35em; - vertical-align: middle; - flex: 0 0 auto; - background-color: currentColor; - pointer-events: none; - transition: transform 120ms ease; - - -webkit-mask: no-repeat center / contain url("data:image/svg+xml;utf8,"); - mask: no-repeat center / contain url("data:image/svg+xml;utf8,"); + content: ''; + display: inline-block; + width: 0.8em; + height: 0.8em; + margin-left: 0.35em; + vertical-align: middle; + flex: 0 0 auto; + background-color: currentColor; + pointer-events: none; + transition: transform 120ms ease; + + -webkit-mask: no-repeat center / contain + url("data:image/svg+xml;utf8,"); + mask: no-repeat center / contain + url("data:image/svg+xml;utf8,"); } @media (min-width: 72rem) { - :root { - --sl-content-width: 68rem; - } + :root { + --sl-content-width: 68rem; + } } @media (prefers-reduced-motion: no-preference) { - @view-transition { - navigation: auto; - } + @view-transition { + navigation: auto; + } } .clickable-card { - text-decoration: none; + text-decoration: none; } a.clickable-card article, a.clickable-card article.card p.title { - color: var(--sl-color-text); + color: var(--sl-color-text); } a.clickable-card article:hover { - transition: all 0.25s ease-in-out; - box-shadow: var(--sl-shadow-md); + transition: all 0.25s ease-in-out; + box-shadow: var(--sl-shadow-md); } table td code, table th code { - white-space: nowrap; + white-space: nowrap; } table td, table th { - vertical-align: top; + vertical-align: top; } a { - white-space: nowrap; -} \ No newline at end of file + white-space: nowrap; +} diff --git a/src/frontend/src/utils/helpers.js b/src/frontend/src/utils/helpers.js index b08016b3..023e225e 100644 --- a/src/frontend/src/utils/helpers.js +++ b/src/frontend/src/utils/helpers.js @@ -6,10 +6,10 @@ * @returns {boolean} */ export function isHomepage(Astro) { - const pathname = Astro?.url?.pathname || "/"; - const locale = Astro?.locals?.starlightRoute?.locale; + const pathname = Astro?.url?.pathname || '/'; + const locale = Astro?.locals?.starlightRoute?.locale; - return pathname === "/" || (locale ? pathname === `/${locale}/` : false); + return pathname === '/' || (locale ? pathname === `/${locale}/` : false); } /** @@ -19,32 +19,32 @@ export function isHomepage(Astro) { * @returns {T[]} - The shuffled array. */ export function shuffle(array) { - let arr = [...array]; - for (let i = arr.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [arr[i], arr[j]] = [arr[j], arr[i]]; - } - return arr; + let arr = [...array]; + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [arr[i], arr[j]] = [arr[j], arr[i]]; + } + return arr; } /** * Generates a friendly searchable name from an Aspire NuGet package ID. * Removes 'Aspire.Hosting.' prefix, replaces dots with hyphens, and converts to lowercase. Based on: https://github.com/dotnet/aspire/blob/main/src/Aspire.Cli/Commands/AddCommand.cs#L254-L261 - * + * * @param {string} packageId - The full NuGet package ID (e.g., "Aspire.Hosting.Azure.AppContainers") * @returns {string} The friendly name (e.g., "azure-appcontainers") - * + * * @example * generateFriendlyName("Aspire.Hosting.Azure.Redis") // Returns: "azure-redis" * generateFriendlyName("Aspire.Hosting.Postgres") // Returns: "postgres" * generateFriendlyName("CommunityToolkit.Aspire.Hosting.Cosmos") // Returns: "communitytoolkit-cosmos" */ export function generateFriendlyName(packageId) { - // Remove 'Aspire.Hosting.' segment from anywhere in the package name (case-insensitive) - const withoutPrefix = packageId.replace(/Aspire\.Hosting\./gi, ''); + // Remove 'Aspire.Hosting.' segment from anywhere in the package name (case-insensitive) + const withoutPrefix = packageId.replace(/Aspire\.Hosting\./gi, ''); - // Replace dots with hyphens and convert to lowercase - const friendlyName = withoutPrefix.replace(/\./g, '-').toLowerCase(); + // Replace dots with hyphens and convert to lowercase + const friendlyName = withoutPrefix.replace(/\./g, '-').toLowerCase(); - return friendlyName; -} \ No newline at end of file + return friendlyName; +} diff --git a/src/frontend/src/utils/imageImporter.js b/src/frontend/src/utils/imageImporter.js index 64fdd049..0af6c4d8 100644 --- a/src/frontend/src/utils/imageImporter.js +++ b/src/frontend/src/utils/imageImporter.js @@ -5,7 +5,9 @@ // Import all images from the testimonials directory // This uses Vite's import.meta.glob feature -const testimonialImages = import.meta.glob('../assets/testimonials/*.{png,jpg,jpeg,webp}', { eager: true }); +const testimonialImages = import.meta.glob('../assets/testimonials/*.{png,jpg,jpeg,webp}', { + eager: true, +}); /** * Get an imported image by path @@ -13,13 +15,13 @@ const testimonialImages = import.meta.glob('../assets/testimonials/*.{png,jpg,jp * @returns {string} The processed image URL or the original path if not found */ export function getImageByPath(path) { - if (!path || typeof path !== 'string' || !path.startsWith('../assets/')) { - return path; - } - - const importedImage = testimonialImages[path]; - - return importedImage?.default || path; + if (!path || typeof path !== 'string' || !path.startsWith('../assets/')) { + return path; + } + + const importedImage = testimonialImages[path]; + + return importedImage?.default || path; } /** @@ -28,14 +30,14 @@ export function getImageByPath(path) { * @returns {Array} The processed array with imported images */ export function processAvatars(items) { - if (!Array.isArray(items)) return []; - - return items.map(item => { - if (!item || typeof item !== 'object') return item; - - return { - ...item, - avatar: getImageByPath(item.avatar) - }; - }); + if (!Array.isArray(items)) return []; + + return items.map((item) => { + if (!item || typeof item !== 'object') return item; + + return { + ...item, + avatar: getImageByPath(item.avatar), + }; + }); } diff --git a/src/frontend/tsconfig.json b/src/frontend/tsconfig.json index 2577349c..c8ff1f2b 100644 --- a/src/frontend/tsconfig.json +++ b/src/frontend/tsconfig.json @@ -7,7 +7,7 @@ "@assets/*": ["./src/assets/*"], "@components/*": ["./src/components/*"], "@data/*": ["./src/data/*"], - "@utils/*": ["./src/utils/*"], + "@utils/*": ["./src/utils/*"] } } } From eb6757c88bccdf2f988b6f3ce445dd74a4704d38 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 11:42:53 -0600 Subject: [PATCH 02/15] Refactor documentation to enhance clarity and consistency - Removed "proseWrap" setting from Prettier configuration. - Added spacing in various documentation sections for improved readability. - Updated Azure integration documentation to include steps for connecting to storage resources. - Enhanced migration documentation with clearer steps for applying migrations. - Added settings for Prettier in VSCode to support Astro files. --- .vscode/settings.json | 8 ++++++++ src/frontend/.prettierrc | 1 - .../architecture/resource-api-patterns.mdx | 2 ++ .../docs/architecture/resource-model.mdx | 6 ++++++ .../docs/architecture/resource-publishing.mdx | 2 ++ .../docs/community/contributor-guide.mdx | 3 +++ .../src/content/docs/dashboard/copilot.mdx | 2 ++ .../src/content/docs/dashboard/mcp-server.mdx | 2 ++ .../docs/dashboard/standalone-for-nodejs.mdx | 6 ++++++ .../docs/dashboard/standalone-for-python.mdx | 8 ++++++++ .../src/content/docs/diagnostics/aspire008.mdx | 2 ++ src/frontend/src/content/docs/docs.mdx | 2 ++ .../docs/fundamentals/launch-profiles.mdx | 2 ++ .../src/content/docs/get-started/app-host.mdx | 8 ++++++++ .../docs/get-started/deploy-first-app.mdx | 2 ++ .../src/content/docs/get-started/first-app.mdx | 1 + .../content/docs/get-started/install-cli.mdx | 2 ++ .../src/content/docs/get-started/pipelines.mdx | 8 ++++++++ .../content/docs/get-started/prerequisites.mdx | 1 + .../src/content/docs/get-started/resources.mdx | 4 ++++ .../cloud/azure/azure-storage-blobs.mdx | 1 + .../cloud/azure/azure-storage-queues.mdx | 1 + .../cloud/azure/azure-storage-tables.mdx | 1 + .../cloud/azure/local-provisioning.mdx | 2 ++ .../docs/integrations/cloud/azure/overview.mdx | 2 ++ .../databases/efcore/migrations.mdx | 18 ++++++++++++++++++ .../docs/integrations/frameworks/maui.mdx | 12 ++++++++++++ .../content/docs/reference/cli/overview.mdx | 2 ++ .../src/content/docs/testing/overview.mdx | 2 ++ .../src/content/docs/whats-new/aspire-13.mdx | 8 ++++++++ 30 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..3d03f263 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "prettier.documentSelectors": [ + "**/*.astro" + ], + "[astro]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } +} \ No newline at end of file diff --git a/src/frontend/.prettierrc b/src/frontend/.prettierrc index fc9212eb..651353d9 100644 --- a/src/frontend/.prettierrc +++ b/src/frontend/.prettierrc @@ -5,7 +5,6 @@ "tabWidth": 2, "trailingComma": "es5", "useTabs": false, - "proseWrap": "never", "endOfLine": "lf", "plugins": [ "prettier-plugin-astro", diff --git a/src/frontend/src/content/docs/architecture/resource-api-patterns.mdx b/src/frontend/src/content/docs/architecture/resource-api-patterns.mdx index d9ad8b4e..7366782f 100644 --- a/src/frontend/src/content/docs/architecture/resource-api-patterns.mdx +++ b/src/frontend/src/content/docs/architecture/resource-api-patterns.mdx @@ -20,10 +20,12 @@ This guide describes each pattern and shows a **verbatim Redis example** at the An `AddX(...)` method executes: + 1. **Validate inputs** (`builder`, `name`, required arguments). 1. **Instantiate** the data-only resource (`new TResource(...)`). 1. **Register** it with `builder.AddResource(resource)`. 1. **Optional wiring** of endpoints, health checks, container settings, environment variables, command-line arguments, and event subscriptions. + ### Signature pattern diff --git a/src/frontend/src/content/docs/architecture/resource-model.mdx b/src/frontend/src/content/docs/architecture/resource-model.mdx index 941adb38..e05c2d69 100644 --- a/src/frontend/src/content/docs/architecture/resource-model.mdx +++ b/src/frontend/src/content/docs/architecture/resource-model.mdx @@ -38,6 +38,7 @@ architecture-beta ``` + 1. Use `.AddXyz(...)` helper methods to add and declare resources (e.g., `.AddPostgres(...)`, `.AddProject(...)`). 1. Use `.WithReference(...)` (or similar) to represent explicit dependencies between resources. 1. Call `Build().Run()` - Aspire builds the application model (graph) and executes it handling: @@ -45,6 +46,7 @@ architecture-beta - Port allocation - Environment variables - Startup order + ## Resource basics @@ -188,11 +190,13 @@ Custom resources must **opt-in manually** to these behaviors. Aspire defines standard events to orchestrate resource lifecycles, in the following order: + 1. `InitializeResourceEvent`: Fired when a resource is first created to kick off the resource's lifecycle. 1. `ConnectionStringAvailableEvent`: Fired when a connection string is ready, enabling dependent resources to wire themselves dynamically based on the resource's outputs. 1. `ResourceEndpointsAllocatedEvent`: Fired when endpoints have been allocated and can be evaluated successfully. 1. `BeforeResourceStartedEvent`: Fired just before the resource starts executing as a last-chance dynamic setup or validation point. 1. `ResourceReadyEvent`: Fired when the resource is considered "ready," unblocking any dependents waiting for the resource. + Lifecycle events allow: @@ -230,9 +234,11 @@ Events represent **moment-in-time actions**. Snapshots represent **ongoing state Aspire integrates with .NET health checks to monitor the status of resources after they have started. The health check mechanism is tied into the resource lifecycle: + 1. When a resource transitions to the `Running` state, Aspire checks if it has any associated health check annotations (typically added via `.WithHealthCheck(...)`). 1. **If health checks are configured:** Aspire begins executing these checks periodically. The resource is considered fully "ready" only after its health checks pass successfully. Once healthy, Aspire automatically publishes the `ResourceReadyEvent`. 1. **If no health checks are configured:** The resource is considered "ready" as soon as it enters the `Running` state. Aspire automatically publishes the `ResourceReadyEvent` immediately in this case. + This automatic handling ensures that dependent resources (using mechanisms like `.WaitFor(...)`) only proceed when the target resource is truly ready, either by simply running or by passing its defined health checks. diff --git a/src/frontend/src/content/docs/architecture/resource-publishing.mdx b/src/frontend/src/content/docs/architecture/resource-publishing.mdx index d1a82647..f1663df2 100644 --- a/src/frontend/src/content/docs/architecture/resource-publishing.mdx +++ b/src/frontend/src/content/docs/architecture/resource-publishing.mdx @@ -9,9 +9,11 @@ Aspire provides a flexible mechanism for publishing resource manifests, enabling Custom resources that publish JSON manifest entries must: + 1. **Register a callback** using `ManifestPublishingCallbackAnnotation` in the constructor. 1. **Implement the callback** to write JSON via `ManifestPublishingContext.Writer`. 1. **Use value objects** (`IManifestExpressionProvider`) for structured fields. + Resources can opt-out of being included in the publishing manifest entirely by calling the `ExcludeFromManifest()` extension method on the `IResourceBuilder`. Resources marked this way will be omitted when generating publishing assets like Docker Compose files or Kubernetes manifests. diff --git a/src/frontend/src/content/docs/community/contributor-guide.mdx b/src/frontend/src/content/docs/community/contributor-guide.mdx index 5cd36507..c4aff88c 100644 --- a/src/frontend/src/content/docs/community/contributor-guide.mdx +++ b/src/frontend/src/content/docs/community/contributor-guide.mdx @@ -25,6 +25,7 @@ Before you begin, ensure you have the following installed: ## ⚙️ Local dev setup + 1. Clone the `aspire.dev` repository. ```bash @@ -60,6 +61,7 @@ Before you begin, ensure you have the following installed: ## ➡️ Git workflow + 1. Start from an issue (or a discussion that leads to an issue) 1. Fork the repository @@ -75,6 +77,7 @@ Before you begin, ensure you have the following installed: 1. Commit with descriptive messages 1. Push to your fork 1. Create a pull request, and always follow the [Code of Conduct](https://github.com/microsoft/aspire.dev/blob/main/CODE_OF_CONDUCT.md) + ## ✍️ Writing style guide diff --git a/src/frontend/src/content/docs/dashboard/copilot.mdx b/src/frontend/src/content/docs/dashboard/copilot.mdx index cd7d7089..cca8d4d4 100644 --- a/src/frontend/src/content/docs/dashboard/copilot.mdx +++ b/src/frontend/src/content/docs/dashboard/copilot.mdx @@ -38,11 +38,13 @@ If you don't have a Copilot subscription yet, you can use Copilot for free by si To get started, launch your Aspire solution as usual in your IDE. + 1. Open your Aspire solution in a supported version of Visual Studio or VS Code with the C# Dev Kit extension installed. 1. Ensure you're logged into the IDE with a GitHub account: - For Visual Studio, see [Add your GitHub accounts to your Visual Studio keychain](https://aka.ms/dotnet/aspire/copilot-vs-login). - For VS Code and C# Dev Kit, see [Set up GitHub Copilot in VS Code](https://aka.ms/dotnet/aspire/copilot-vscode-login). 1. Run the Aspire AppHost. + A GitHub Copilot button appears in the top-right corner of the dashboard. Selecting the button opens the Copilot UI. diff --git a/src/frontend/src/content/docs/dashboard/mcp-server.mdx b/src/frontend/src/content/docs/dashboard/mcp-server.mdx index 5d930638..9e43a1c5 100644 --- a/src/frontend/src/content/docs/dashboard/mcp-server.mdx +++ b/src/frontend/src/content/docs/dashboard/mcp-server.mdx @@ -19,9 +19,11 @@ The Aspire MCP server is a local [Model Context Protocol (MCP)](https://modelcon To get started, configure your local AI assistant to use Aspire MCP. + 1. Run your Aspire app. 1. Open the Aspire dashboard and click on the MCP button in the top right corner of the dashboard. This launches a dialog that contains instructions for using Aspire MCP. 1. Use the specified details in the dialog to configure your local AI assistant. + Important settings required to use Aspire MCP: diff --git a/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx b/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx index 42987238..23dcfa8f 100644 --- a/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx +++ b/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx @@ -23,6 +23,7 @@ To complete this tutorial, you need the following: For this tutorial, you'll create a simple Express.js API that demonstrates how to integrate the Aspire dashboard with any Node.js application. While Aspire 13.0 includes JavaScript starter templates, this tutorial shows you how to add dashboard integration to any existing Node.js project. + 1. Create a new directory for your application: ```bash title="Create project directory" @@ -96,6 +97,7 @@ For this tutorial, you'll create a simple Express.js API that demonstrates how t 1. Browse to `http://localhost:3000/api/weatherforecast` to verify the API is working. 1. Stop the application with Ctrl+C. + ## Configure OpenTelemetry @@ -103,6 +105,7 @@ For this tutorial, you'll create a simple Express.js API that demonstrates how t Now let's add OpenTelemetry instrumentation to send telemetry data to the Aspire dashboard. + 1. Create a new file called *telemetry.js* to configure OpenTelemetry with proper resource attributes: ```javascript title="JavaScript — telemetry.js" @@ -193,6 +196,7 @@ Now let's add OpenTelemetry instrumentation to send telemetry data to the Aspire ```bash npm start ``` + ## Start the Aspire dashboard @@ -225,6 +229,7 @@ In the Docker logs, the endpoint and key for the dashboard are displayed. Copy t After starting both the dashboard and your Node.js application, you can view telemetry data by making requests to your application and observing the results in the dashboard. + 1. Make some requests to your Node.js application: ```bash @@ -233,6 +238,7 @@ After starting both the dashboard and your Node.js application, you can view tel ``` 1. Navigate to the Aspire dashboard at `http://localhost:18888` and explore the different sections: + ### Traces diff --git a/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx b/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx index 2fc30bb1..8f96b4b9 100644 --- a/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx +++ b/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx @@ -30,6 +30,7 @@ To complete this tutorial, you need the following: This tutorial uses the Aspire 13.0 Python starter template which includes a FastAPI backend and React frontend. You'll focus on the FastAPI app to demonstrate dashboard integration with standalone mode. + 1. Create a new Aspire solution from the Python starter template: ```bash title="Create a new Aspire Python solution" @@ -59,6 +60,7 @@ This tutorial uses the Aspire 13.0 Python starter template which includes a Fast ```bash title="Install dependencies with uv" uv sync ``` + ## Start the Aspire dashboard @@ -79,6 +81,7 @@ Leave the dashboard running and open a new terminal for the next steps. The starter template includes basic telemetry configuration in `telemetry.py`. Let's enhance it to work with the standalone Aspire dashboard. + 1. Install additional OpenTelemetry packages for better instrumentation: ```bash title="Install OpenTelemetry packages" @@ -197,6 +200,7 @@ The starter template includes basic telemetry configuration in `telemetry.py`. L 1. Test the application by browsing to `http://localhost:8000` and `http://localhost:8000/health` to generate telemetry data. + ## View telemetry in the dashboard @@ -204,6 +208,7 @@ The starter template includes basic telemetry configuration in `telemetry.py`. L With both the dashboard and your Python application running, you can now view telemetry data in real-time: + 1. Navigate to the Aspire dashboard at `http://localhost:18888` (if not already open). 2. Make requests to your FastAPI application: - Browse to `http://localhost:8000` for the root endpoint @@ -213,6 +218,7 @@ With both the dashboard and your Python application running, you can now view te - **Structured Logs**: View application logs with filtering and search capabilities - **Traces**: See distributed traces for HTTP requests - **Metrics**: Monitor application performance metrics + The structured logs page displays logs from your application with rich filtering and search capabilities: @@ -227,8 +233,10 @@ The structured logs page displays logs from your application with rich filtering When you're done exploring the Aspire dashboard with your Python app, stop both the FastAPI application and the dashboard: + 1. Stop the FastAPI application by pressing in the terminal where it's running. 2. Stop the Aspire dashboard by pressing in the terminal where the Docker container is running. + ## Next steps diff --git a/src/frontend/src/content/docs/diagnostics/aspire008.mdx b/src/frontend/src/content/docs/diagnostics/aspire008.mdx index f891b85e..c6bc1f45 100644 --- a/src/frontend/src/content/docs/diagnostics/aspire008.mdx +++ b/src/frontend/src/content/docs/diagnostics/aspire008.mdx @@ -43,9 +43,11 @@ Follow the migration guide at [https://aka.ms/aspire/update-to-sdk](https://aka. The migration typically involves: + 1. Updating your AppHost project file to use the `Aspire.AppHost.Sdk`. 1. Removing references to the deprecated workload. 1. Updating package references to supported versions. + ## Suppress the error diff --git a/src/frontend/src/content/docs/docs.mdx b/src/frontend/src/content/docs/docs.mdx index e5d846bc..5f3c3118 100644 --- a/src/frontend/src/content/docs/docs.mdx +++ b/src/frontend/src/content/docs/docs.mdx @@ -14,10 +14,12 @@ import { Card, CardGrid, LinkButton, LinkCard, Steps } from '@astrojs/starlight/ Use the following steps to get started with Aspire: + 1. [Check prerequisites](/get-started/prerequisites/): Ensure you have the required tools and SDKs installed. 1. [Install the Aspire CLI](/get-started/install-cli/): Get the Aspire tooling set up on your development machine. 1. [Build your first app](/get-started/first-app/): Follow our quickstart guide to create your first Aspire application. 1. [Deploy your app](/get-started/deploy-first-app/): Learn how to deploy your Aspire resources. + ## Explore key concepts diff --git a/src/frontend/src/content/docs/fundamentals/launch-profiles.mdx b/src/frontend/src/content/docs/fundamentals/launch-profiles.mdx index ad167725..09162d71 100644 --- a/src/frontend/src/content/docs/fundamentals/launch-profiles.mdx +++ b/src/frontend/src/content/docs/fundamentals/launch-profiles.mdx @@ -111,10 +111,12 @@ builder.AddProject( The preceding code shows that the `inventoryservice` resource (a .NET project) is launched using the options from the `mylaunchprofile` launch profile. The launch profile precedence logic is as follows: + 1. Use the launch profile specified by `launchProfileName` argument if specified. 2. Use the launch profile with the same name as the AppHost (determined by reading the `DOTNET_LAUNCH_PROFILE` environment variable). 3. Use the default (first) launch profile in _launchSettings.json_. 4. Don't use a launch profile. + To force a service project to launch without a launch profile the `launchProfileName` argument on the `AddProject` method can be set to null. diff --git a/src/frontend/src/content/docs/get-started/app-host.mdx b/src/frontend/src/content/docs/get-started/app-host.mdx index ec75a46d..ad7d8d67 100644 --- a/src/frontend/src/content/docs/get-started/app-host.mdx +++ b/src/frontend/src/content/docs/get-started/app-host.mdx @@ -40,9 +40,11 @@ Below we highlight the key parts of a typical AppHost to explain what each step In the non-collapsed lines you: + 1. Create the distributed application builder with `DistributedApplication.CreateBuilder(args)`. 1. Call `Build()` to materialize the configuration into a runnable AppHost. 1. Call `Run()` to start orchestration; services launch in dependency order. + The AppHost is the blueprint for your distributed application—Aspire manages the rest. @@ -118,10 +120,12 @@ architecture-beta **How these resources communicate** + 1. `pg` publishes a `ConnectionStringReference` (host, port, database, user, password)—a strongly typed bundle Aspire understands. 1. `api` declares a dependency on that reference; Aspire injects the connection string into its config with a unique configuration-flow process that injects settings values, including secrets, parameters, and connection strings for both local runs and deployments. 1. `api` then publishes an `EndpointReference` (its base URL) after its HTTP endpoint is allocated. 1. `front end` depends on that endpoint; Aspire injects the API base URL so no hard-coded addresses are needed. + After adding `NpgsqlDataSource` to the builder, you can get the `NpgsqlDataSource` instance using dependency injection. For example, to retrieve your data source object from an example service define it as a constructor parameter and ensure the `ExampleService` class is registered with the dependency injection container: @@ -79,24 +88,24 @@ Aspire exposes each property as an environment variable named `[RESOURCE]_[PROPE The PostgreSQL server resource exposes the following connection properties: -| Property Name | Description | -|---------------|-------------| -| `Host` | The hostname or IP address of the PostgreSQL server | -| `Port` | The port number the PostgreSQL server is listening on | -| `Username` | The username for authentication | -| `Password` | The password for authentication | -| `Uri` | The connection URI in postgresql:// format, with the format `postgresql://{Username}:{Password}@{Host}:{Port}` | +| Property Name | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Host` | The hostname or IP address of the PostgreSQL server | +| `Port` | The port number the PostgreSQL server is listening on | +| `Username` | The username for authentication | +| `Password` | The password for authentication | +| `Uri` | The connection URI in postgresql:// format, with the format `postgresql://{Username}:{Password}@{Host}:{Port}` | | `JdbcConnectionString` | JDBC-format connection string, with the format `jdbc:postgresql://{Host}:{Port}`. User and password credentials are provided as separate `Username` and `Password` properties. | ### PostgreSQL database resource The PostgreSQL database resource inherits all properties from its parent `PostgresServerResource` and adds: -| Property Name | Description | -|---------------|-------------| -| `Uri` | The connection URI with the database name, with the format `postgresql://{Username}:{Password}@{Host}:{Port}/{DatabaseName}` | +| Property Name | Description | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Uri` | The connection URI with the database name, with the format `postgresql://{Username}:{Password}@{Host}:{Port}/{DatabaseName}` | | `JdbcConnectionString` | JDBC connection string with database name, with the format `jdbc:postgresql://{Host}:{Port}/{DatabaseName}`. User and password credentials are provided as separate `Username` and `Password` properties. | -| `DatabaseName` | The name of the database | +| `DatabaseName` | The name of the database | ## Configuration @@ -162,7 +171,7 @@ By default, Aspire _client integrations_ have health checks enabled for all serv ## Observability and telemetry -Aspire integrations automatically set up Logging, Tracing, and Metrics configurations, which are sometimes known as *the pillars of observability*. Depending on the backing service, some integrations may only support some of these features. For example, some integrations support logging and tracing, but not metrics. Telemetry features can also be disabled using the techniques presented in the [Configuration](#configuration) section. +Aspire integrations automatically set up Logging, Tracing, and Metrics configurations, which are sometimes known as _the pillars of observability_. Depending on the backing service, some integrations may only support some of these features. For example, some integrations support logging and tracing, but not metrics. Telemetry features can also be disabled using the techniques presented in the [Configuration](#configuration) section. ### Logging @@ -195,4 +204,4 @@ The Aspire PostgreSQL integration will emit the following metrics using OpenTele - `ec_Npgsql_prepared_commands_ratio` - `ec_Npgsql_connection_pools` - `ec_Npgsql_multiplexing_average_commands_per_batch` - - `ec_Npgsql_multiplexing_average_write_time_per_batch` \ No newline at end of file + - `ec_Npgsql_multiplexing_average_write_time_per_batch` diff --git a/src/frontend/src/content/docs/integrations/databases/qdrant.mdx b/src/frontend/src/content/docs/integrations/databases/qdrant.mdx index 7665e240..0b30edb7 100644 --- a/src/frontend/src/content/docs/integrations/databases/qdrant.mdx +++ b/src/frontend/src/content/docs/integrations/databases/qdrant.mdx @@ -44,17 +44,26 @@ var myService = builder.AddProject() ``` The `WithReference` method configures a connection in the `ExampleProject` named `qdrant`. ### Handling API keys and parameters @@ -107,10 +116,11 @@ var myService = builder.AddProject() ``` - ### Connection properties When you reference a Qdrant resource using `WithReference`, the following connection properties are made available to the consuming project: @@ -119,15 +129,15 @@ When you reference a Qdrant resource using `WithReference`, the following connec The Qdrant server resource exposes the following connection properties: -| Property Name | Description | -|---------------|-------------| -| `GrpcHost` | The gRPC hostname of the Qdrant server | -| `GrpcPort` | The gRPC port of the Qdrant server | -| `HttpHost` | The HTTP hostname of the Qdrant server | -| `HttpPort` | The HTTP port of the Qdrant server | -| `ApiKey` | The API key for authentication | -| `Uri` | The gRPC connection URI, with the format `http://{GrpcHost}:{GrpcPort}` | -| `HttpUri` | The HTTP connection URI, with the format `http://{HttpHost}:{HttpPort}` | +| Property Name | Description | +| ------------- | ----------------------------------------------------------------------- | +| `GrpcHost` | The gRPC hostname of the Qdrant server | +| `GrpcPort` | The gRPC port of the Qdrant server | +| `HttpHost` | The HTTP hostname of the Qdrant server | +| `HttpPort` | The HTTP port of the Qdrant server | +| `ApiKey` | The API key for authentication | +| `Uri` | The gRPC connection URI, with the format `http://{GrpcHost}:{GrpcPort}` | +| `HttpUri` | The HTTP connection URI, with the format `http://{HttpHost}:{HttpPort}` | **Example connection strings:** @@ -137,7 +147,9 @@ HttpUri: http://localhost:6333 ``` ### Hosting integration health checks @@ -161,7 +173,8 @@ builder.AddQdrantClient("qdrant"); ``` You can then retrieve the `QdrantClient` instance using dependency injection: diff --git a/src/frontend/src/content/docs/integrations/databases/ravendb.mdx b/src/frontend/src/content/docs/integrations/databases/ravendb.mdx index 0f5057a2..73b47fe1 100644 --- a/src/frontend/src/content/docs/integrations/databases/ravendb.mdx +++ b/src/frontend/src/content/docs/integrations/databases/ravendb.mdx @@ -49,7 +49,9 @@ builder.AddProject() ``` ### Add RavenDB server resource with data volume @@ -107,7 +109,8 @@ builder.AddProject() ``` ### Hosting integration health checks @@ -129,7 +132,9 @@ builder.AddRavenDBClient(connectionName: "ravendb"); ``` You can then retrieve the `IDocumentStore` instance using dependency injection: @@ -157,7 +162,8 @@ builder.AddRavenDBClient(settings: settings); ``` ### Add keyed RavenDB client diff --git a/src/frontend/src/content/docs/integrations/databases/sqlite.mdx b/src/frontend/src/content/docs/integrations/databases/sqlite.mdx index f0863315..6a8036f7 100644 --- a/src/frontend/src/content/docs/integrations/databases/sqlite.mdx +++ b/src/frontend/src/content/docs/integrations/databases/sqlite.mdx @@ -67,7 +67,8 @@ This code adds a container based on `ghcr.io/coleifer/sqlite-web` to the AppHost SQLite supports extensions that can be added to the SQLite database. Extensions can either be provided via a NuGet package, or via a location on disk. Use either the `WithNuGetExtension` or `WithLocalExtension` extension methods to add extensions to the SQLite database. ## Client integration @@ -85,7 +86,8 @@ builder.AddSqliteConnection(name: "sqlite"); ``` After adding `SqliteConnection` to the builder, you can get the `SqliteConnection` instance using dependency injection. For example, to retrieve your connection object from an example service define it as a constructor parameter: diff --git a/src/frontend/src/content/docs/integrations/devtools/dab.mdx b/src/frontend/src/content/docs/integrations/devtools/dab.mdx index 86e39c2e..5710c760 100644 --- a/src/frontend/src/content/docs/integrations/devtools/dab.mdx +++ b/src/frontend/src/content/docs/integrations/devtools/dab.mdx @@ -6,7 +6,7 @@ prev: false import { Badge } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; import { Image } from 'astro:assets'; import dabIcon from '@assets/icons/data-api-builder-icon.png'; @@ -145,6 +145,7 @@ The Aspire integration automatically injects the database connection strings fro ### Endpoints Data API Builder exposes two endpoints: + - **REST API**: Available at `/api` by default - **GraphQL API**: Available at `/graphql` by default diff --git a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx index 5177f311..5f496fc1 100644 --- a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx +++ b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx @@ -22,7 +22,8 @@ import devTunnelsIcon from '@assets/icons/dev-tunnels-icon.svg'; [Dev tunnels](https://learn.microsoft.com/developer/dev-tunnels/overview) allow developers to securely share local web services across the internet. The Dev Tunnels integration makes it easy to model dev tunnels in your AppHost projects so that they're automatically managed during development. Dev tunnels are useful for: @@ -32,7 +33,9 @@ Dev tunnels are useful for: - Quickly publishing a temporary, TLS-terminated endpoint during development ## Prerequisites @@ -43,7 +46,11 @@ Before you create a dev tunnel, you first need to download and install the devtu To get started with the Dev Tunnels integration, install the [📦 Aspire.Hosting.DevTunnels](https://www.nuget.org/packages/Aspire.Hosting.DevTunnels) NuGet package in the AppHost project: - + ### Add a dev tunnel resource @@ -110,6 +117,7 @@ var tunnel = builder.AddDevTunnel("mixed-access") ``` The preceding code exposes: + - The `public` endpoint of the `api` project with anonymous access - The `admin` endpoint of the `api` project that requires authentication @@ -125,11 +133,14 @@ services__web__https__0=https://myweb-1234.westeurope.devtunnels.ms/ This lets downstream resources use the tunneled address exactly like any other Aspire service discovery entry. ## Configuration @@ -138,22 +149,22 @@ Dev tunnels are a development time concern only and aren't included when publish The `DevTunnelOptions` class provides several configuration options: -| Property | Description | -|--|--| -| `Description` | A description for the tunnel that appears in the dev tunnels service | -| `Labels` | A list of labels to apply to the tunnel for organization and filtering | -| `AllowAnonymous` | Whether to allow anonymous access to the entire tunnel | +| Property | Description | +| ---------------- | ---------------------------------------------------------------------- | +| `Description` | A description for the tunnel that appears in the dev tunnels service | +| `Labels` | A list of labels to apply to the tunnel for organization and filtering | +| `AllowAnonymous` | Whether to allow anonymous access to the entire tunnel | ### Dev tunnel port options The `DevTunnelPortOptions` class provides configuration for individual tunnel ports: -| Property | Description | -|--|--| -| `Protocol` | The protocol to use (`http`, `https`, or `auto`). If not specified, uses the endpoint's scheme | -| `Description` | A description for this specific port | -| `Labels` | Labels to apply to this port | -| `AllowAnonymous` | Whether to allow anonymous access to this specific port | +| Property | Description | +| ---------------- | ---------------------------------------------------------------------------------------------- | +| `Protocol` | The protocol to use (`http`, `https`, or `auto`). If not specified, uses the endpoint's scheme | +| `Description` | A description for this specific port | +| `Labels` | Labels to apply to this port | +| `AllowAnonymous` | Whether to allow anonymous access to this specific port | ### Security considerations @@ -193,4 +204,4 @@ Verify that: - The tunnel is running and healthy in the Aspire dashboard - You're using the correct tunnel URL -- Anonymous access is configured correctly if accessing without authentication \ No newline at end of file +- Anonymous access is configured correctly if accessing without authentication diff --git a/src/frontend/src/content/docs/integrations/devtools/mailpit.mdx b/src/frontend/src/content/docs/integrations/devtools/mailpit.mdx index e7537cd4..caf1882c 100644 --- a/src/frontend/src/content/docs/integrations/devtools/mailpit.mdx +++ b/src/frontend/src/content/docs/integrations/devtools/mailpit.mdx @@ -4,7 +4,7 @@ title: MailPit integration import { Badge } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; import ThemeImage from '@components/ThemeImage.astro'; import mailpitIcon from '@assets/icons/mailpit-icon.svg'; import mailpitLightIcon from '@assets/icons/mailpit-light-icon.svg'; @@ -49,6 +49,7 @@ When Aspire adds MailPit to the app host, it creates a new MailPit instance with ### Ports MailPit exposes two ports: + - **SMTP port**: 1025 (for sending emails) - **Web UI port**: 8025 (for viewing emails in the browser) diff --git a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx index f5d0ff99..93ce25f0 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx @@ -6,7 +6,7 @@ prev: false import { Badge } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; import { Image } from 'astro:assets'; import bunIcon from '@assets/icons/bun-icon.png'; @@ -48,6 +48,7 @@ builder.AddProject() ``` The `AddBunApp` method requires: + - **name**: The name of the resource in the Aspire dashboard - **workingDirectory**: The path to the directory containing your Bun application @@ -101,7 +102,7 @@ Your Bun application can read the PORT environment variable: const server = Bun.serve({ port: process.env.PORT || 3000, fetch(request) { - return new Response("Hello from Bun!"); + return new Response('Hello from Bun!'); }, }); diff --git a/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx index ffe03822..4258a9e9 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx @@ -4,7 +4,7 @@ title: Go integration import { Badge } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; import ThemeImage from '@components/ThemeImage.astro'; import goIcon from '@assets/icons/go-icon.png'; import goLightIcon from '@assets/icons/go-light-icon.png'; @@ -48,6 +48,7 @@ builder.AddProject() ``` The `AddGolangApp` method requires: + - **name**: The name of the resource in the Aspire dashboard - **workingDirectory**: The path to the directory containing your Go application diff --git a/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx b/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx index 8c38e406..b5c2c57e 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx @@ -22,7 +22,7 @@ import orleansIcon from '@assets/icons/microsoft-orleans.png'; Orleans is represented as a resource in Aspire. Unlike other integrations, the Orleans integration doesn't create a container and doesn't require a separate client integration package. Instead you complete the Orleans configuration in the Aspire AppHost project. ## Hosting integration @@ -252,20 +252,24 @@ public static IHostApplicationBuilder ConfigureOpenTelemetry(this IHostApplicati The Orleans Aspire integration supports a limited subset of Orleans providers: **Clustering:** + - Redis - Azure Storage Tables **Persistence:** + - Redis - Azure Storage Tables - Azure Storage Blobs **Reminders:** + - Redis - Azure Storage Tables **Grain directory:** + - Redis - Azure Storage Tables -Streaming providers aren't supported as of Orleans version 8.1.0. \ No newline at end of file +Streaming providers aren't supported as of Orleans version 8.1.0. diff --git a/src/frontend/src/content/docs/integrations/gallery.mdx b/src/frontend/src/content/docs/integrations/gallery.mdx index 92ba204e..4b19b04e 100644 --- a/src/frontend/src/content/docs/integrations/gallery.mdx +++ b/src/frontend/src/content/docs/integrations/gallery.mdx @@ -11,4 +11,7 @@ import integrationJson from '../../../data/aspire-integrations.json'; import integrationDocsJson from '../../../data/integration-docs.json'; import Integrations from '@components/Integrations.astro'; - \ No newline at end of file + diff --git a/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx b/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx index bf9f24f6..4e2769bd 100644 --- a/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx +++ b/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx @@ -4,8 +4,8 @@ title: LavinMQ integration import { Badge } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; -import InstallDotNetPackage from "@components/InstallDotNetPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; +import InstallDotNetPackage from '@components/InstallDotNetPackage.astro'; import { Image } from 'astro:assets'; import lavinmqIcon from '@assets/icons/lavinmq-icon.png'; @@ -122,4 +122,4 @@ The LavinMQ integration uses the RabbitMQ client, which provides observability f - [RabbitMQ integration](rabbitmq.md) - [Aspire Community Toolkit](https://github.com/CommunityToolkit/Aspire) - [Aspire integrations overview](overview.md) -- [Aspire GitHub repo](https://github.com/dotnet/aspire) \ No newline at end of file +- [Aspire GitHub repo](https://github.com/dotnet/aspire) diff --git a/src/frontend/src/content/docs/integrations/messaging/nats.mdx b/src/frontend/src/content/docs/integrations/messaging/nats.mdx index 743d10fa..fad41a02 100644 --- a/src/frontend/src/content/docs/integrations/messaging/nats.mdx +++ b/src/frontend/src/content/docs/integrations/messaging/nats.mdx @@ -3,8 +3,8 @@ title: NATS integration --- import { Aside } from '@astrojs/starlight/components'; -import InstallPackage from "@components/InstallPackage.astro"; -import InstallDotNetPackage from "@components/InstallDotNetPackage.astro"; +import InstallPackage from '@components/InstallPackage.astro'; +import InstallDotNetPackage from '@components/InstallDotNetPackage.astro'; import { Image } from 'astro:assets'; import natsIcon from '@assets/icons/nats-icon.png'; @@ -97,7 +97,6 @@ builder.AddProject() .WithReference(nats); ``` - ### Connection properties When you reference a NATS resource using `WithReference`, the following connection properties are made available to the consuming project: @@ -106,13 +105,13 @@ When you reference a NATS resource using `WithReference`, the following connecti The NATS server resource exposes the following connection properties: -| Property Name | Description | -|---------------|-------------| -| `Host` | The hostname or IP address of the NATS server | -| `Port` | The port number the NATS server is listening on | -| `Username` | The username for authentication | -| `Password` | The password for authentication | -| `Uri` | The connection URI with the format `nats://{Username}:{Password}@{Host}:{Port}` | +| Property Name | Description | +| ------------- | ------------------------------------------------------------------------------- | +| `Host` | The hostname or IP address of the NATS server | +| `Port` | The port number the NATS server is listening on | +| `Username` | The username for authentication | +| `Password` | The password for authentication | +| `Uri` | The connection URI with the format `nats://{Username}:{Password}@{Host}:{Port}` | **Example connection string:** @@ -121,7 +120,9 @@ Uri: nats://admin:p%40ssw0rd1@localhost:4222 ``` ## Client integration diff --git a/src/frontend/src/content/docs/integrations/observability/seq.mdx b/src/frontend/src/content/docs/integrations/observability/seq.mdx index 38f5283e..b464c2bf 100644 --- a/src/frontend/src/content/docs/integrations/observability/seq.mdx +++ b/src/frontend/src/content/docs/integrations/observability/seq.mdx @@ -46,7 +46,10 @@ var myService = builder.AddProject() ``` #### Accept the Seq End User License Agreement (EULA) @@ -88,7 +91,6 @@ var myService = builder.AddProject() The data volume is used to persist the Seq data outside the lifecycle of its container. - ### Connection properties When you reference a Seq resource using `WithReference`, the following connection properties are made available to the consuming project: @@ -97,11 +99,11 @@ When you reference a Seq resource using `WithReference`, the following connectio The Seq resource exposes the following connection properties: -| Property Name | Description | -|---------------|-------------| -| `Host` | The hostname or IP address of the Seq server | -| `Port` | The port number the Seq server is listening on | -| `Uri` | The connection URI, with the format `http://{Host}:{Port}` | +| Property Name | Description | +| ------------- | ---------------------------------------------------------- | +| `Host` | The hostname or IP address of the Seq server | +| `Port` | The port number the Seq server is listening on | +| `Uri` | The connection URI, with the format `http://{Host}:{Port}` | **Example connection string:** @@ -110,7 +112,9 @@ Uri: http://localhost:5341 ``` ## Client integration @@ -128,7 +132,8 @@ builder.AddSeqEndpoint(connectionName: "seq"); ``` ### Configuration diff --git a/src/frontend/src/content/docs/integrations/overview.mdx b/src/frontend/src/content/docs/integrations/overview.mdx index 5aaf25be..6c1e7fc5 100644 --- a/src/frontend/src/content/docs/integrations/overview.mdx +++ b/src/frontend/src/content/docs/integrations/overview.mdx @@ -1,5 +1,5 @@ --- -title: Integrations Overview +title: Integrations Overview description: Aspire integrations overview page, showcasing how Aspire works with various tools and platforms. tableOfContents: true prev: false @@ -13,7 +13,8 @@ import { Aside } from '@astrojs/starlight/components'; Aspire integrations are a curated suite of packages that make it easy to connect your cloud-native applications with popular services like Redis and PostgreSQL. Each integration provides essential cloud-native capabilities through automatic setup or standardized configuration. ## Integration responsibilities @@ -32,7 +33,7 @@ Hosting integrations extend the `IDistributedApplicationBuilder` interface to en ### Client integrations -Client integrations wire up client libraries to dependency injection (DI), define configuration schema, and add _health checks_, _resiliency_, and _telemetry_ where applicable. Aspire client integration libraries are prefixed with `Aspire.` and then include the full package name that they integrate with, such as `Aspire.StackExchange.Redis`. +Client integrations wire up client libraries to dependency injection (DI), define configuration schema, and add _health checks_, _resiliency_, and _telemetry_ where applicable. Aspire client integration libraries are prefixed with `Aspire.` and then include the full package name that they integrate with, such as `Aspire.StackExchange.Redis`. These packages configure existing client libraries to connect to hosting integrations. Key characteristics include: @@ -46,10 +47,9 @@ Hosting and client integrations work together but are **not** coupled and can be ## Integration features -When you add a client integration to a project within your Aspire solution, _service defaults_ are automatically applied to that project; meaning the Service Defaults project is referenced and the `AddServiceDefaults` extension method is called. These defaults are designed to work well in most scenarios and can be customized as needed. The following service defaults are applied: +When you add a client integration to a project within your Aspire solution, _service defaults_ are automatically applied to that project; meaning the Service Defaults project is referenced and the `AddServiceDefaults` extension method is called. These defaults are designed to work well in most scenarios and can be customized as needed. The following service defaults are applied: - **Observability and telemetry**: Automatically sets up logging, tracing, and metrics configurations: - - **Logging**: A technique where code is instrumented to produce logs of interesting events that occurred while the program was running. - **Tracing**: A specialized form of logging that helps you localize failures and performance issues within applications distributed across multiple machines or processes. - **Metrics**: Numerical measurements recorded over time to monitor application performance and health. Metrics are often used to generate alerts when potential problems are detected. @@ -59,6 +59,6 @@ When you add a client integration to a project within your Aspire solution, _se ## Versioning considerations -Hosting and client integrations are updated each release to target the latest stable versions of dependent resources. When container images are updated with new image versions, the hosting integrations update to these new versions. Similarly, when a new package version is available for a dependent client library, the corresponding client integration updates to the new version. This ensures the latest features and security updates are available to applications. The Aspire update type (major, minor, patch) doesn't necessarily indicate the type of update in dependent resources. For example, a new major version of a dependent resource may be updated in a Aspire patch release, if necessary. +Hosting and client integrations are updated each release to target the latest stable versions of dependent resources. When container images are updated with new image versions, the hosting integrations update to these new versions. Similarly, when a new package version is available for a dependent client library, the corresponding client integration updates to the new version. This ensures the latest features and security updates are available to applications. The Aspire update type (major, minor, patch) doesn't necessarily indicate the type of update in dependent resources. For example, a new major version of a dependent resource may be updated in a Aspire patch release, if necessary. When major breaking changes happen in dependent resources, integrations may temporarily split into version-dependent packages to ease updating across the breaking change. diff --git a/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx b/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx index 8753ad5d..c1e88e62 100644 --- a/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx +++ b/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx @@ -48,7 +48,10 @@ var gateway = builder.AddYarp("gateway") When Aspire adds a YARP resource to the AppHost, it creates a new containerized YARP instance using the [mcr.microsoft.com/dotnet/nightly/yarp](https://mcr.microsoft.com/product/dotnet/nightly/yarp/about) container image. ### Programmatic configuration diff --git a/src/frontend/src/content/docs/integrations/security/keycloak.mdx b/src/frontend/src/content/docs/integrations/security/keycloak.mdx index f5d997d4..31b6dcc4 100644 --- a/src/frontend/src/content/docs/integrations/security/keycloak.mdx +++ b/src/frontend/src/content/docs/integrations/security/keycloak.mdx @@ -28,7 +28,11 @@ import keycloakIcon from '@assets/icons/keycloak-icon.svg'; The Keycloak hosting integration models the server as the `KeycloakResource` type. To access this type and APIs, add the [📦 Aspire.Hosting.Keycloak](https://www.nuget.org/packages/Aspire.Hosting.Keycloak) NuGet package in your AppHost project: - + ### Add Keycloak resource @@ -51,7 +55,10 @@ var webfrontend = builder.AddProject("webfrontend") ``` When Aspire adds a container image to the AppHost, it creates a new Keycloak instance on your local machine. The Keycloak resource includes default credentials: @@ -68,7 +75,9 @@ When the AppHost runs, the password is stored in the AppHost's secret store in t ``` ### Add Keycloak resource with data volume @@ -89,7 +98,8 @@ var apiService = builder.AddProject("apiservice") The data volume is used to persist the Keycloak data outside the lifecycle of its container. The data volume is mounted at the `/opt/keycloak/data` path in the Keycloak container. ### Add Keycloak resource with data bind mount @@ -108,7 +118,9 @@ var apiService = builder.AddProject("apiservice") ``` ### Add Keycloak resource with parameters @@ -155,7 +167,10 @@ The Keycloak hosting integration doesn't currently support health checks, nor do To get started with the Keycloak client integration, install the [📦 Aspire.Keycloak.Authentication](https://www.nuget.org/packages/Aspire.Keycloak.Authentication) NuGet package in your ASP.NET Core project: - + The Keycloak client integration registers JwtBearer and OpenId Connect authentication handlers in the DI container for connecting to a Keycloak server. @@ -182,7 +197,11 @@ builder.Services.AddAuthentication() ``` ### Add OpenId Connect authentication @@ -244,4 +263,4 @@ builder.AddConnectionString("keycloak", "https://your-keycloak-server.com"); - Use secure, validated SSL certificates for your Keycloak server - Configure appropriate realm settings and client configurations in Keycloak - Implement proper token validation and audience checks -- Consider using Keycloak's built-in security features like rate limiting and brute force protection \ No newline at end of file +- Consider using Keycloak's built-in security features like rate limiting and brute force protection diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache-clear.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache-clear.mdx index d5854885..211d1a1c 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache-clear.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache-clear.mdx @@ -51,10 +51,9 @@ The `aspire cache clear` command removes: - Other CLI operation caches ## Performance impact diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx index f3db562e..63760fed 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx @@ -33,8 +33,8 @@ The following options are available: The following commands are available: -| Command | Status | Function | -|--|--|--| +| Command | Status | Function | +| ---------------------------------------------- | ------ | ------------------------ | | [`aspire cache clear`](../aspire-cache-clear/) | Stable | Clear all cache entries. | ## Cache location diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-config-get.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-config-get.mdx index 60b615f5..429449c9 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-config-get.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-config-get.mdx @@ -5,7 +5,6 @@ description: Learn about the aspire config get command and its usage. This comma import Include from '@components/Include.astro'; - ## Name `aspire config get` - Get a configuration value. diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-config.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-config.mdx index 8713984b..bb503458 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-config.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-config.mdx @@ -35,12 +35,12 @@ The following options are available: The following commands are available: -| Command | Status | Function | -|--|--|--| -| [`aspire config list`](../aspire-config-list/) | Stable | List all configuration values. | -| [`aspire config get `](../aspire-config-get/) | Stable | Get a configuration value. | -| [`aspire config set `](../aspire-config-set/) | Stable | Set a configuration value. | -| [`aspire config delete `](../aspire-config-delete/) | Stable | Delete a configuration value. | +| Command | Status | Function | +| ---------------------------------------------------------- | ------ | ------------------------------ | +| [`aspire config list`](../aspire-config-list/) | Stable | List all configuration values. | +| [`aspire config get `](../aspire-config-get/) | Stable | Get a configuration value. | +| [`aspire config set `](../aspire-config-set/) | Stable | Set a configuration value. | +| [`aspire config delete `](../aspire-config-delete/) | Stable | Delete a configuration value. | ## Settings diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx index b91819f4..4cf55aa7 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx @@ -52,7 +52,7 @@ The following options are available: Each command represents a template. Pass the `--help` parameter to the template command to print the options available to the template. | Command | Template | -|--------------------------|------------------------------| +| ------------------------ | ---------------------------- | | `aspire` | Aspire Empty App | | `aspire-apphost` | Aspire AppHost | | `aspire-mstest` | Aspire Test Project (MSTest) | @@ -73,4 +73,4 @@ Each command represents a template. Pass the `--help` parameter to the template ```bash title="Aspire CLI" aspire new aspire-apphost --version 13.0.0 --name aspireapp --output ./dev - ``` \ No newline at end of file + ``` diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx index 9c65c90b..a086be45 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx @@ -37,19 +37,19 @@ The following options are available when `aspire` is used by itself, without spe The following commands are available: -| Command | Status | Function | -|--|--|--| -| [`aspire add`](../aspire-add/) | Stable | Add an integration to the Aspire project. | -| [`aspire cache`](../aspire-cache/) | Stable | Manage disk cache for CLI operations. | -| [`aspire config`](../aspire-config/) | Stable | Configures the Aspire environment. | -| [`aspire deploy`](../aspire-deploy/) | Preview | Deploys the artifacts created by `aspire publish`. | -| [`aspire do`](../aspire-do/) | Preview | Execute a specific pipeline step and its dependencies. | -| [`aspire exec`](../aspire-exec/) | Preview | Similar to the `aspire run` command, but passes commands to the apphost. | -| [`aspire init`](../aspire-init/) | Stable | Initialize Aspire support in an existing solution or create a single-file AppHost. | -| [`aspire new`](../aspire-new/) | Stable | Create an Aspire sample project from a template. | -| [`aspire publish`](../aspire-publish/) | Preview | Generates deployment artifacts for an Aspire apphost project. | -| [`aspire run`](../aspire-run/) | Stable | Run an Aspire apphost for local development. | -| [`aspire update`](../aspire-update/) | Preview | Update Aspire packages and templates in your project. | +| Command | Status | Function | +| -------------------------------------- | ------- | ---------------------------------------------------------------------------------- | +| [`aspire add`](../aspire-add/) | Stable | Add an integration to the Aspire project. | +| [`aspire cache`](../aspire-cache/) | Stable | Manage disk cache for CLI operations. | +| [`aspire config`](../aspire-config/) | Stable | Configures the Aspire environment. | +| [`aspire deploy`](../aspire-deploy/) | Preview | Deploys the artifacts created by `aspire publish`. | +| [`aspire do`](../aspire-do/) | Preview | Execute a specific pipeline step and its dependencies. | +| [`aspire exec`](../aspire-exec/) | Preview | Similar to the `aspire run` command, but passes commands to the apphost. | +| [`aspire init`](../aspire-init/) | Stable | Initialize Aspire support in an existing solution or create a single-file AppHost. | +| [`aspire new`](../aspire-new/) | Stable | Create an Aspire sample project from a template. | +| [`aspire publish`](../aspire-publish/) | Preview | Generates deployment artifacts for an Aspire apphost project. | +| [`aspire run`](../aspire-run/) | Stable | Run an Aspire apphost for local development. | +| [`aspire update`](../aspire-update/) | Preview | Update Aspire packages and templates in your project. | ## Examples diff --git a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md index d77269f3..f3bd3db7 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md +++ b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md @@ -2,16 +2,16 @@ title: Config Settings Table --- -| Setting | Description | -|--|--| -| `appHostPath` | Path to default AppHost project. | -| `features.defaultWatchEnabled` | Enable watch mode by default for run command. | -| `features.dotnetSdkInstallationEnabled` | Enable automatic .NET SDK installation. | -| `features.execCommandEnabled` | Enable exec command. | -| `features.minimumSdkCheckEnabled` | Enforce minimum SDK version. | -| `features.orphanDetectionWithTimestampEnabled` | Use timestamp-based orphan detection. | -| `features.packageSearchDiskCachingEnabled` | Cache package search results on disk. | -| `features.showAllTemplates` | Show all templates including experimental ones. | -| `features.showDeprecatedPackages` | Show deprecated packages. | -| `features.stagingChannelEnabled` | Use staging channel packages. | -| `features.updateNotificationsEnabled` | Show update notifications. | +| Setting | Description | +| ---------------------------------------------- | ----------------------------------------------- | +| `appHostPath` | Path to default AppHost project. | +| `features.defaultWatchEnabled` | Enable watch mode by default for run command. | +| `features.dotnetSdkInstallationEnabled` | Enable automatic .NET SDK installation. | +| `features.execCommandEnabled` | Enable exec command. | +| `features.minimumSdkCheckEnabled` | Enforce minimum SDK version. | +| `features.orphanDetectionWithTimestampEnabled` | Use timestamp-based orphan detection. | +| `features.packageSearchDiskCachingEnabled` | Cache package search results on disk. | +| `features.showAllTemplates` | Show all templates including experimental ones. | +| `features.showDeprecatedPackages` | Show deprecated packages. | +| `features.stagingChannelEnabled` | Use staging channel packages. | +| `features.updateNotificationsEnabled` | Show update notifications. | diff --git a/src/frontend/src/content/docs/reference/cli/includes/option-debug.md b/src/frontend/src/content/docs/reference/cli/includes/option-debug.md index 35b1843a..dd116b13 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/option-debug.md +++ b/src/frontend/src/content/docs/reference/cli/includes/option-debug.md @@ -4,4 +4,4 @@ title: Debug Option **`-d, --debug`** - Enable debug logging to the console, which prints detailed information about what Aspire CLI is doing when a command is run. +Enable debug logging to the console, which prints detailed information about what Aspire CLI is doing when a command is run. diff --git a/src/frontend/src/content/docs/reference/cli/includes/option-help.md b/src/frontend/src/content/docs/reference/cli/includes/option-help.md index 73aa8df3..9851b6e0 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/option-help.md +++ b/src/frontend/src/content/docs/reference/cli/includes/option-help.md @@ -4,4 +4,4 @@ title: Help Option **`-?, -h, --help`** - Prints help and usage documentation for the available commands and options. +Prints help and usage documentation for the available commands and options. diff --git a/src/frontend/src/content/docs/reference/cli/includes/option-project.md b/src/frontend/src/content/docs/reference/cli/includes/option-project.md index 0f5efd08..0e6242ec 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/option-project.md +++ b/src/frontend/src/content/docs/reference/cli/includes/option-project.md @@ -4,4 +4,4 @@ title: Option Project **`--project`** - The path to the Aspire AppHost project file. +The path to the Aspire AppHost project file. diff --git a/src/frontend/src/content/docs/reference/cli/includes/option-version.md b/src/frontend/src/content/docs/reference/cli/includes/option-version.md index 89f43abb..deefa666 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/option-version.md +++ b/src/frontend/src/content/docs/reference/cli/includes/option-version.md @@ -4,4 +4,4 @@ title: Option Version **`--version`** - Prints the version of the Aspire CLI tool. +Prints the version of the Aspire CLI tool. diff --git a/src/frontend/src/content/docs/reference/cli/includes/option-wait.md b/src/frontend/src/content/docs/reference/cli/includes/option-wait.md index c08a1135..1ff8b424 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/option-wait.md +++ b/src/frontend/src/content/docs/reference/cli/includes/option-wait.md @@ -4,4 +4,4 @@ title: Option Wait **`--wait-for-debugger`** - Wait for a debugger to attach before running a command. +Wait for a debugger to attach before running a command. diff --git a/src/frontend/src/content/docs/reference/cli/includes/project-search-logic-description.md b/src/frontend/src/content/docs/reference/cli/includes/project-search-logic-description.md index 738fc19e..198848f0 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/project-search-logic-description.md +++ b/src/frontend/src/content/docs/reference/cli/includes/project-search-logic-description.md @@ -15,5 +15,5 @@ The Aspire CLI uses the following logic, in order, to determine which AppHost pr - Searches the current directory and subdirectories. Starting in the current directory, the CLI gathers all AppHost projects from that directory and below. If a single project is discovered, it's automatically selected. If multiple projects are discovered, they're printed to the terminal for the user to manually select one of the projects. - + Once a project is selected, either automatically or manually, the path to the project is stored in the `.aspire/settings.json` config file. diff --git a/src/frontend/src/content/docs/testing/accessing-resources.mdx b/src/frontend/src/content/docs/testing/accessing-resources.mdx index 89730bcd..0c839114 100644 --- a/src/frontend/src/content/docs/testing/accessing-resources.mdx +++ b/src/frontend/src/content/docs/testing/accessing-resources.mdx @@ -20,7 +20,9 @@ In a test, you might want to access other resources by the connection informatio Starting with Aspire 9, there's support for waiting on dependent resources to be available (via the [health check](/fundamentals/health-checks/) mechanism). This is useful in tests that ensure a resource is available before attempting to access it. The `ResourceNotificationService` class provides a `WaitForResourceAsync` method that's used to wait for a named resource to be available. This method takes the resource name and the desired state of the resource as parameters and returns a `Task` that yields back when the resource is available. You can access the `ResourceNotificationService` via `app.ResourceNotifications`, as in the following example. ```csharp From 50b878d3f2d8a98d0dc5ae1e42ea764201d2dd81 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 12:29:49 -0600 Subject: [PATCH 04/15] docs: Enhance contributor guide with code quality checks and commands --- .../docs/community/contributor-guide.mdx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/frontend/src/content/docs/community/contributor-guide.mdx b/src/frontend/src/content/docs/community/contributor-guide.mdx index c4aff88c..a36fecf2 100644 --- a/src/frontend/src/content/docs/community/contributor-guide.mdx +++ b/src/frontend/src/content/docs/community/contributor-guide.mdx @@ -58,6 +58,26 @@ Before you begin, ensure you have the following installed: +## 🧹 Code quality checks + +Before committing your changes, ensure your code follows the project's style guidelines by running the linting and formatting commands: + +- **Lint your code** - Check for code quality issues: + + ```bash + npm run lint + ``` + +- **Format your code** - Auto-format your code to match the project's style: + + ```bash + npm run format + ``` + + + ## ➡️ Git workflow @@ -74,6 +94,13 @@ Before you begin, ensure you have the following installed: ``` 1. Make your changes, considering the writing style guide +1. Run lint and format commands to ensure code quality + + ```bash + npm run lint + npm run format + ``` + 1. Commit with descriptive messages 1. Push to your fork 1. Create a pull request, and always follow the [Code of Conduct](https://github.com/microsoft/aspire.dev/blob/main/CODE_OF_CONDUCT.md) From b11c33c95e043a8ccf3913c4bd00fff7358e7fb4 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 13:01:57 -0600 Subject: [PATCH 05/15] Refactor code structure for improved readability and maintainability --- .devcontainer/devcontainer.json | 2 +- .github/workflows/dependency-updates.yml | 12 +- .github/workflows/frontend-build.yml | 10 +- .github/workflows/integration.yml | 12 +- .github/workflows/lint-validate.yml | 12 +- .github/workflows/security-scan.yml | 16 +- .gitignore | 4 + package-lock.json | 11 - package.json | 14 +- pnpm-lock.yaml | 9 + src/frontend/package-lock.json | 10926 ---------------- src/frontend/package.json | 22 +- src/frontend/pnpm-lock.yaml | 7363 +++++++++++ .../docs/community/contributor-guide.mdx | 15 +- 14 files changed, 7444 insertions(+), 10984 deletions(-) delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml delete mode 100644 src/frontend/package-lock.json create mode 100644 src/frontend/pnpm-lock.yaml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a1226c74..9b4f78d6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,6 +18,6 @@ "onAutoForward": "openBrowser" } }, - "postCreateCommand": "npm install && echo '\n✨ Ready to go! Run \"npm run dev\" to start the dev server.\n'", + "postCreateCommand": "npm install -g pnpm && pnpm install && echo '\n✨ Ready to go! Run \"pnpm run dev\" to start the dev server.\n'", "remoteUser": "node" } diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml index 0f446210..2bff640d 100644 --- a/.github/workflows/dependency-updates.yml +++ b/.github/workflows/dependency-updates.yml @@ -24,22 +24,26 @@ jobs: with: fetch-depth: 0 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - cache: "npm" - cache-dependency-path: "src/frontend/package-lock.json" + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install dependencies run: | cd src/frontend - npm ci + pnpm install --frozen-lockfile - name: Update integration data run: | cd src/frontend - npm run update:all + pnpm run update:all - name: Check for changes id: verify-changed-files diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 89ce94d3..9814c8be 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -21,14 +21,18 @@ jobs: with: fetch-depth: 0 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 with: node-version: ${{ inputs.node_version }} - cache: npm - cache-dependency-path: src/frontend/package-lock.json + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - run: cd src/frontend && npm ci + run: cd src/frontend && pnpm install --frozen-lockfile - name: Build frontend env: diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index d758e3c2..294f2a48 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -18,23 +18,27 @@ jobs: with: fetch-depth: 0 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 with: node-version: ${{ inputs.node_version }} - cache: npm - cache-dependency-path: src/frontend/package-lock.json + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml - uses: actions/setup-dotnet@v4 with: global-json-file: global.json - name: Install frontend deps - run: cd src/frontend && npm ci + run: cd src/frontend && pnpm install --frozen-lockfile - name: Build frontend env: MODE: production - run: cd src/frontend && npm run build:production + run: cd src/frontend && pnpm run build:production - name: Build AppHost run: cd src/apphost/Aspire.Dev.AppHost && dotnet build --configuration Release diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index d9d256cd..60426621 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -18,17 +18,21 @@ jobs: with: fetch-depth: 0 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 with: node-version: ${{ inputs.node_version }} - cache: npm - cache-dependency-path: src/frontend/package-lock.json + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - run: cd src/frontend && npm ci + run: cd src/frontend && pnpm install --frozen-lockfile - name: Run ESLint - run: cd src/frontend && npm run lint + run: cd src/frontend && pnpm run lint - name: Astro type check run: cd src/frontend && npx astro check | tee ../astro-check.txt diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index c34ef7d3..74c6d8d9 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -16,17 +16,21 @@ jobs: steps: - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 with: node-version: ${{ inputs.node_version }} - cache: npm - cache-dependency-path: src/frontend/package-lock.json + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install frontend deps - run: cd src/frontend && npm ci + run: cd src/frontend && pnpm install --frozen-lockfile - - name: Run npm audit - run: cd src/frontend && npm audit --audit-level=moderate | tee ../npm-audit.txt + - name: Run pnpm audit + run: cd src/frontend && pnpm audit --audit-level=moderate | tee ../pnpm-audit.txt continue-on-error: true - uses: actions/setup-dotnet@v4 @@ -62,7 +66,7 @@ jobs: name: security-scan-results path: | trivy-results.sarif - src/npm-audit.txt + src/pnpm-audit.txt src/dotnet-vulnerabilities.txt if-no-files-found: warn retention-days: 7 diff --git a/.gitignore b/.gitignore index 46790906..c3dbb824 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,10 @@ yarn-debug.log* yarn-error.log* pnpm-debug.log* +# pnpm +.pnpm-store/ +.pnpm-debug.log + # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 24c7921f..00000000 --- a/package-lock.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "root", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "root", - "hasInstallScript": true - } - } -} diff --git a/package.json b/package.json index 134e2aed..bf248c00 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,12 @@ "private": true, "description": "Root-level package.json delegating to src/frontend.", "scripts": { - "install": "cd src/frontend && npm i", - "dev": "cd src/frontend && npm run dev", - "build": "cd src/frontend && npm run build", - "preview": "cd src/frontend && npm run preview", - "lint": "cd src/frontend && npm run lint", - "format": "cd src/frontend && npm run format", - "update:all": "cd src/frontend && npm run update:all" + "install": "cd src/frontend && pnpm i", + "dev": "cd src/frontend && pnpm run dev", + "build": "cd src/frontend && pnpm run build", + "preview": "cd src/frontend && pnpm run preview", + "lint": "cd src/frontend && pnpm run lint", + "format": "cd src/frontend && pnpm run format", + "update:all": "cd src/frontend && pnpm run update:all" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..9b60ae17 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json deleted file mode 100644 index 71c1ce89..00000000 --- a/src/frontend/package-lock.json +++ /dev/null @@ -1,10926 +0,0 @@ -{ - "name": "aspire.dev", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "aspire.dev", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-bluesky": "^0.1.5", - "@astro-community/astro-embed-vimeo": "^0.3.11", - "@astro-community/astro-embed-youtube": "^0.5.9", - "@astrojs/rss": "^4.0.14", - "@astrojs/starlight": "^0.36.2", - "@catppuccin/starlight": "^1.0.2", - "@expressive-code/plugin-collapsible-sections": "^0.41.3", - "@expressive-code/plugin-line-numbers": "^0.41.3", - "@fontsource-variable/fira-code": "^5.2.7", - "@fontsource-variable/outfit": "^5.2.7", - "@fontsource-variable/rubik": "^5.2.8", - "@fontsource/poppins": "^5.2.7", - "@jop-software/astro-cookieconsent": "^3.0.1", - "@lunariajs/starlight": "^0.1.1", - "asciinema-player": "^3.12.1", - "astro": "^5.16.0", - "astro-mermaid": "^1.1.0", - "astro-tooltips": "^0.6.2", - "mermaid": "^11.12.1", - "remark-directive": "^4.0.0", - "sharp": "^0.34.5", - "starlight-contributor-list": "^0.3.1", - "starlight-giscus": "^0.8.1", - "starlight-github-alerts": "^0.1.1", - "starlight-image-zoom": "^0.13.2", - "starlight-kbd": "^0.2.1", - "starlight-links-validator": "^0.19.1", - "starlight-llms-txt": "^0.6.0", - "starlight-scroll-to-top": "^0.4.0", - "starlight-sidebar-topics": "^0.6.2", - "vanilla-cookieconsent": "^3.1.0" - }, - "devDependencies": { - "@eslint/js": "^9.39.1", - "astro-embed": "^0.9.1", - "astro-vtbot": "^2.1.9", - "cross-env": "^10.1.0", - "eslint": "^9.39.1", - "eslint-config-prettier": "^10.1.8", - "node-fetch": "^3.3.2", - "prettier": "^3.7.4", - "prettier-plugin-astro": "^0.14.1", - "typescript-eslint": "^8.48.1" - } - }, - "node_modules/@11ty/eleventy-fetch": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-4.0.1.tgz", - "integrity": "sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "flat-cache": "^3.0.4", - "node-fetch": "^2.6.7", - "p-queue": "^6.6.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-fetch/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/@11ty/eleventy-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@11ty/eleventy-fetch/node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@11ty/eleventy-fetch/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", - "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", - "license": "MIT", - "dependencies": { - "package-manager-detector": "^1.3.0", - "tinyexec": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.0.tgz", - "integrity": "sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@astro-community/astro-embed-baseline-status": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-baseline-status/-/astro-embed-baseline-status-0.2.0.tgz", - "integrity": "sha512-OtMNgMLW6Rs32WfUXyoa2Im7QB0orH1g6KD3a6Kq+08XnPtIHJEkcGtlNylYf4jUm5S8uTPloVWP3WS1U/o/OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-utils": "^0.1.0" - }, - "peerDependencies": { - "astro": "^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/@astro-community/astro-embed-bluesky": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-bluesky/-/astro-embed-bluesky-0.1.5.tgz", - "integrity": "sha512-/0wruqqgcbB/z8KnUGETURvNwct5cKBcPit/gJus7oOQctT8+wUjWcIlCn3uyqaZUq6ghpbRsj2eSD75rJZzSQ==", - "license": "MIT", - "dependencies": { - "@atproto/api": "^0.13.14", - "ts-pattern": "^5.5.0" - }, - "peerDependencies": { - "astro": "^4.0.0 || ^5.0.0-beta.0" - } - }, - "node_modules/@astro-community/astro-embed-integration": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-integration/-/astro-embed-integration-0.8.1.tgz", - "integrity": "sha512-lI5oekRcmRdNI0AWluAZuM8ZyIV2S64KDPsOo/bbR6diF//Vic5Jy6Tz0gAPjcNMlZSSGMjXBKuUCQZS338e7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-bluesky": "^0.1.3", - "@astro-community/astro-embed-link-preview": "^0.2.0", - "@astro-community/astro-embed-twitter": "^0.5.5", - "@astro-community/astro-embed-vimeo": "^0.3.9", - "@astro-community/astro-embed-youtube": "^0.5.4", - "@types/unist": "^2.0.0", - "astro-auto-import": "^0.4.2", - "unist-util-select": "^4.0.1" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/@astro-community/astro-embed-integration/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@astro-community/astro-embed-link-preview": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-link-preview/-/astro-embed-link-preview-0.2.2.tgz", - "integrity": "sha512-eZ/ORqtPCC3Z2cSH6UvOB1w9CBguEQUC4nFdyLmwHYIR3FhkutQgbaP7fgI1r+qUBDbXImpZjYxKS3RB4m/fOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-utils": "^0.1.1" - } - }, - "node_modules/@astro-community/astro-embed-twitter": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-twitter/-/astro-embed-twitter-0.5.8.tgz", - "integrity": "sha512-O2ptQPw+DfipukK8czjJcTcyVgDsrs3OmrHbc3YmWRglaUTOpSTImzPo076POyNBSWjLaRKloul81DFiAMNjTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-utils": "^0.1.0" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/@astro-community/astro-embed-utils": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-utils/-/astro-embed-utils-0.1.5.tgz", - "integrity": "sha512-0RlP7J1YEWrguWDfEDsm4uDCXk4FKn0HHakmSOSwHLg6YR8WNEN/LGMGhhsxLc/mDqO2lRh1VqfJy+yPLLkzsQ==", - "license": "MIT", - "dependencies": { - "linkedom": "^0.18.12" - } - }, - "node_modules/@astro-community/astro-embed-vimeo": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-vimeo/-/astro-embed-vimeo-0.3.11.tgz", - "integrity": "sha512-uvTLmG5z9WGoyKac86Fxh6YnmBwlEQOalbi1/BatUy9zfQ/5x8rFs+U5xiM1nW38dGmDw/Hj7Nq3ljnZxy6PMA==", - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-utils": "^0.1.5" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/@astro-community/astro-embed-youtube": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.5.9.tgz", - "integrity": "sha512-8Uk2SKbyZVb+jxwqSAMoEpQo+063XYwCI3yRy9cbkyHpu09mDabGZNTF5XrL8CKr3NtR5haBkeYK/kSuKUkJ/g==", - "license": "MIT", - "dependencies": { - "lite-youtube-embed": "^0.3.4" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/@astrojs/compiler": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.0.tgz", - "integrity": "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==", - "license": "MIT" - }, - "node_modules/@astrojs/internal-helpers": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", - "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", - "license": "MIT" - }, - "node_modules/@astrojs/markdown-remark": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", - "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.2", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.1.0", - "js-yaml": "^4.1.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.2.1", - "smol-toml": "^1.3.4", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.3" - } - }, - "node_modules/@astrojs/mdx": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.4.tgz", - "integrity": "sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "6.3.6", - "@mdx-js/mdx": "^3.1.0", - "acorn": "^8.14.1", - "es-module-lexer": "^1.6.0", - "estree-util-visit": "^2.0.0", - "hast-util-to-html": "^9.0.5", - "kleur": "^4.1.5", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "remark-smartypants": "^3.0.2", - "source-map": "^0.7.4", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.3" - }, - "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" - }, - "peerDependencies": { - "astro": "^5.0.0" - } - }, - "node_modules/@astrojs/prism": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", - "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", - "license": "MIT", - "dependencies": { - "prismjs": "^1.30.0" - }, - "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" - } - }, - "node_modules/@astrojs/rss": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.14.tgz", - "integrity": "sha512-KCe1imDcADKOOuO/wtKOMDO/umsBD6DWF+94r5auna1jKl5fmlK9vzf+sjA3EyveXA/FoB3khtQ/u/tQgETmTw==", - "license": "MIT", - "dependencies": { - "fast-xml-parser": "^5.3.0", - "piccolore": "^0.1.3" - } - }, - "node_modules/@astrojs/sitemap": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.1.tgz", - "integrity": "sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==", - "license": "MIT", - "dependencies": { - "sitemap": "^8.0.0", - "stream-replace-string": "^2.0.0", - "zod": "^3.24.4" - } - }, - "node_modules/@astrojs/starlight": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.36.2.tgz", - "integrity": "sha512-QR8NfO7+7DR13kBikhQwAj3IAoptLLNs9DkyKko2M2l3PrqpcpVUnw1JBJ0msGDIwE6tBbua2UeBND48mkh03w==", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "^6.3.1", - "@astrojs/mdx": "^4.2.3", - "@astrojs/sitemap": "^3.3.0", - "@pagefind/default-ui": "^1.3.0", - "@types/hast": "^3.0.4", - "@types/js-yaml": "^4.0.9", - "@types/mdast": "^4.0.4", - "astro-expressive-code": "^0.41.1", - "bcp-47": "^2.1.0", - "hast-util-from-html": "^2.0.1", - "hast-util-select": "^6.0.2", - "hast-util-to-string": "^3.0.0", - "hastscript": "^9.0.0", - "i18next": "^23.11.5", - "js-yaml": "^4.1.0", - "klona": "^2.0.6", - "mdast-util-directive": "^3.0.0", - "mdast-util-to-markdown": "^2.1.0", - "mdast-util-to-string": "^4.0.0", - "pagefind": "^1.3.0", - "rehype": "^13.0.1", - "rehype-format": "^5.0.0", - "remark-directive": "^3.0.0", - "ultrahtml": "^1.6.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2" - }, - "peerDependencies": { - "astro": "^5.5.0" - } - }, - "node_modules/@astrojs/starlight/node_modules/micromark-extension-directive": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", - "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "parse-entities": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@astrojs/starlight/node_modules/remark-directive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", - "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-directive": "^3.0.0", - "micromark-extension-directive": "^3.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@astrojs/telemetry": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", - "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", - "license": "MIT", - "dependencies": { - "ci-info": "^4.2.0", - "debug": "^4.4.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "is-docker": "^3.0.0", - "is-wsl": "^3.1.0", - "which-pm-runs": "^1.1.0" - }, - "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" - } - }, - "node_modules/@atproto/api": { - "version": "0.13.35", - "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.13.35.tgz", - "integrity": "sha512-vsEfBj0C333TLjDppvTdTE0IdKlXuljKSveAeI4PPx/l6eUKNnDTsYxvILtXUVzwUlTDmSRqy5O4Ryh78n1b7g==", - "license": "MIT", - "dependencies": { - "@atproto/common-web": "^0.4.0", - "@atproto/lexicon": "^0.4.6", - "@atproto/syntax": "^0.3.2", - "@atproto/xrpc": "^0.6.8", - "await-lock": "^2.2.2", - "multiformats": "^9.9.0", - "tlds": "^1.234.0", - "zod": "^3.23.8" - } - }, - "node_modules/@atproto/common-web": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.2.tgz", - "integrity": "sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==", - "license": "MIT", - "dependencies": { - "graphemer": "^1.4.0", - "multiformats": "^9.9.0", - "uint8arrays": "3.0.0", - "zod": "^3.23.8" - } - }, - "node_modules/@atproto/lexicon": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.13.tgz", - "integrity": "sha512-GtiNQz/cbGRCK0+uitWewx4tMyLEgQ8gTd118Ncl+gCbgcaFUPggi30NjEQNYg1DmCNUZNdrGsQfE97xNodouw==", - "license": "MIT", - "dependencies": { - "@atproto/common-web": "^0.4.2", - "@atproto/syntax": "^0.4.0", - "iso-datestring-validator": "^2.2.2", - "multiformats": "^9.9.0", - "zod": "^3.23.8" - } - }, - "node_modules/@atproto/lexicon/node_modules/@atproto/syntax": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.0.tgz", - "integrity": "sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==", - "license": "MIT" - }, - "node_modules/@atproto/syntax": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.3.4.tgz", - "integrity": "sha512-8CNmi5DipOLaVeSMPggMe7FCksVag0aO6XZy9WflbduTKM4dFZVCs4686UeMLfGRXX+X966XgwECHoLYrovMMg==", - "license": "MIT" - }, - "node_modules/@atproto/xrpc": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.12.tgz", - "integrity": "sha512-Ut3iISNLujlmY9Gu8sNU+SPDJDvqlVzWddU8qUr0Yae5oD4SguaUFjjhireMGhQ3M5E0KljQgDbTmnBo1kIZ3w==", - "license": "MIT", - "dependencies": { - "@atproto/lexicon": "^0.4.10", - "zod": "^3.23.8" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", - "license": "MIT" - }, - "node_modules/@capsizecss/unpack": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz", - "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==", - "license": "MIT", - "dependencies": { - "fontkit": "^2.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@catppuccin/starlight": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@catppuccin/starlight/-/starlight-1.0.2.tgz", - "integrity": "sha512-Qfy0l5EjGCoyRFlpsyDm9YFaxHCZXrMbLaEFPjzbFHMndKLv457nEyNlFnP7EkN1djnJgfORmmoaQ4ru2wiQEg==", - "license": "MIT", - "dependencies": { - "@astrojs/starlight": "^0.35.2" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.32", - "astro": "^5.0.0" - } - }, - "node_modules/@catppuccin/starlight/node_modules/@astrojs/starlight": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.35.3.tgz", - "integrity": "sha512-z9MbODjZl/STU3PPU18iOTkLObJBw7PA8xMe5s+KPscQGL0LNZyQUYeClG+F1/em/k+2AsokGpVPta+aOTk1sg==", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "^6.3.1", - "@astrojs/mdx": "^4.2.3", - "@astrojs/sitemap": "^3.3.0", - "@pagefind/default-ui": "^1.3.0", - "@types/hast": "^3.0.4", - "@types/js-yaml": "^4.0.9", - "@types/mdast": "^4.0.4", - "astro-expressive-code": "^0.41.1", - "bcp-47": "^2.1.0", - "hast-util-from-html": "^2.0.1", - "hast-util-select": "^6.0.2", - "hast-util-to-string": "^3.0.0", - "hastscript": "^9.0.0", - "i18next": "^23.11.5", - "js-yaml": "^4.1.0", - "klona": "^2.0.6", - "mdast-util-directive": "^3.0.0", - "mdast-util-to-markdown": "^2.1.0", - "mdast-util-to-string": "^4.0.0", - "pagefind": "^1.3.0", - "rehype": "^13.0.1", - "rehype-format": "^5.0.0", - "remark-directive": "^3.0.0", - "ultrahtml": "^1.6.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2" - }, - "peerDependencies": { - "astro": "^5.5.0" - } - }, - "node_modules/@catppuccin/starlight/node_modules/micromark-extension-directive": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", - "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "parse-entities": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@catppuccin/starlight/node_modules/remark-directive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", - "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-directive": "^3.0.0", - "micromark-extension-directive": "^3.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", - "license": "Apache-2.0" - }, - "node_modules/@clack/core": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz", - "integrity": "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==", - "license": "MIT", - "dependencies": { - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", - "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@expressive-code/core": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.3.tgz", - "integrity": "sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^4.0.4", - "hast-util-select": "^6.0.2", - "hast-util-to-html": "^9.0.1", - "hast-util-to-text": "^4.0.1", - "hastscript": "^9.0.0", - "postcss": "^8.4.38", - "postcss-nested": "^6.0.1", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1" - } - }, - "node_modules/@expressive-code/plugin-collapsible-sections": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-collapsible-sections/-/plugin-collapsible-sections-0.41.3.tgz", - "integrity": "sha512-cuHIN7Ipl7gUcaWFfsgy6G3wn0Svk8dQ6WKXNQha63BURbm7CSBhD6y9qFGeIOrxaJtvH4Pj3Xb4C2Ni0OVwYA==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3" - } - }, - "node_modules/@expressive-code/plugin-frames": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.3.tgz", - "integrity": "sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3" - } - }, - "node_modules/@expressive-code/plugin-line-numbers": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-line-numbers/-/plugin-line-numbers-0.41.3.tgz", - "integrity": "sha512-eig82a4CRC3XgVPQ2S/TMDcLiHJokOCD/mAdNVImpD3segVewxfjGgtj5DXQRo0E0q6f0R0EH34YzTFl5CEPqg==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3" - } - }, - "node_modules/@expressive-code/plugin-shiki": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.3.tgz", - "integrity": "sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3", - "shiki": "^3.2.2" - } - }, - "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.3.tgz", - "integrity": "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3" - } - }, - "node_modules/@fontsource-variable/fira-code": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@fontsource-variable/fira-code/-/fira-code-5.2.7.tgz", - "integrity": "sha512-J2bxN7fz5rd8WpQYyau4o19WqTzxoTqaNj9jhsv4p21GSu1Rf34tbqsxqjyDCR+wDMHM3SajyFqtq+5uvRUQ7w==", - "license": "OFL-1.1", - "funding": { - "url": "https://github.com/sponsors/ayuhito" - } - }, - "node_modules/@fontsource-variable/outfit": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@fontsource-variable/outfit/-/outfit-5.2.7.tgz", - "integrity": "sha512-2CQGRCafcNmWwg9kJGH3x4sNb1WWjEgeBvFTKjacmDANnmU95N2n+DOeSiCQ/8ZblZRMuaBRTVaMOrxK66oydQ==", - "license": "OFL-1.1", - "funding": { - "url": "https://github.com/sponsors/ayuhito" - } - }, - "node_modules/@fontsource-variable/rubik": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/@fontsource-variable/rubik/-/rubik-5.2.8.tgz", - "integrity": "sha512-vGDExLzB4a2Fj9mca5LqNoA2ZKcU9o+x5FEBLte/nxYkCB9hOQwZS6ZlItUv+Ssn7YMzKauGuI/Po+YueFuZbg==", - "license": "OFL-1.1", - "funding": { - "url": "https://github.com/sponsors/ayuhito" - } - }, - "node_modules/@fontsource/poppins": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@fontsource/poppins/-/poppins-5.2.7.tgz", - "integrity": "sha512-6uQyPmseo4FgI97WIhA4yWRlNaoLk4vSDK/PyRwdqqZb5zAEuc+Kunt8JTMcsHYUEGYBtN15SNkMajMdqUSUmg==", - "license": "OFL-1.1", - "funding": { - "url": "https://github.com/sponsors/ayuhito" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.1.tgz", - "integrity": "sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==", - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^1.1.0", - "@antfu/utils": "^9.2.0", - "@iconify/types": "^2.0.0", - "debug": "^4.4.1", - "globals": "^15.15.0", - "kolorist": "^1.8.0", - "local-pkg": "^1.1.1", - "mlly": "^1.7.4" - } - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", - "cpu": [ - "ppc64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.7.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jop-software/astro-cookieconsent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@jop-software/astro-cookieconsent/-/astro-cookieconsent-3.0.1.tgz", - "integrity": "sha512-UXo6aMR9/kEEmUIZoRTRJXDf/ADju9qQ0qNRWM1twdf0vRCh2s/ucHqaYOcs57Q2PcKmcq+Sc+0Tq0gSUgVDzA==", - "license": "GPL-3.0-or-later", - "peerDependencies": { - "vanilla-cookieconsent": "^3.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1" - } - }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "license": "MIT" - }, - "node_modules/@lunariajs/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@lunariajs/core/-/core-0.1.1.tgz", - "integrity": "sha512-sAqM9+DVsLe3xHM9wu2pEnKGYMs/bWS9qpR+CGHol3RihOELnOQTzHddXbdB1MtgesbI8dnQuG64Ocd8KkWsng==", - "license": "MIT", - "dependencies": { - "@clack/core": "^0.3.3", - "fast-glob": "^3.3.1", - "get-port": "^7.0.0", - "jiti": "^1.21.0", - "micromatch": "^4.0.5", - "path-to-regexp": "^6.2.1", - "picocolors": "^1.0.0", - "simple-git": "^3.20.0", - "ultramatter": "^0.0.4", - "zod": "^3.22.4" - }, - "bin": { - "lunaria": "dist/cli/index.mjs" - }, - "engines": { - "node": ">=18.17.0" - } - }, - "node_modules/@lunariajs/starlight": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@lunariajs/starlight/-/starlight-0.1.1.tgz", - "integrity": "sha512-tpkqv8TCGUvz0z5nVk1ACb/2bT3seqDx+CHimNQugcpAFSip9BqDPOiWqaCujzZFajfR/L4mUsPAnavnnE8KVw==", - "license": "MIT", - "dependencies": { - "@lunariajs/core": "^0.1.1" - }, - "engines": { - "node": ">=18.17.0" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.14.0", - "astro": ">=4.0.0" - } - }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mermaid-js/parser": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", - "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", - "license": "MIT", - "dependencies": { - "langium": "3.3.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@oslojs/encoding": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", - "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", - "license": "MIT" - }, - "node_modules/@pagefind/darwin-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.3.0.tgz", - "integrity": "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@pagefind/darwin-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.3.0.tgz", - "integrity": "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@pagefind/default-ui": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.3.0.tgz", - "integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==", - "license": "MIT" - }, - "node_modules/@pagefind/linux-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.3.0.tgz", - "integrity": "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@pagefind/linux-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.3.0.tgz", - "integrity": "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@pagefind/windows-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.3.0.tgz", - "integrity": "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.49.0.tgz", - "integrity": "sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.49.0.tgz", - "integrity": "sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.49.0.tgz", - "integrity": "sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.49.0.tgz", - "integrity": "sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.49.0.tgz", - "integrity": "sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.49.0.tgz", - "integrity": "sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.49.0.tgz", - "integrity": "sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.49.0.tgz", - "integrity": "sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.49.0.tgz", - "integrity": "sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.49.0.tgz", - "integrity": "sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.49.0.tgz", - "integrity": "sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.49.0.tgz", - "integrity": "sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.49.0.tgz", - "integrity": "sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.49.0.tgz", - "integrity": "sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.49.0.tgz", - "integrity": "sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.49.0.tgz", - "integrity": "sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.49.0.tgz", - "integrity": "sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.49.0.tgz", - "integrity": "sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.49.0.tgz", - "integrity": "sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.49.0.tgz", - "integrity": "sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@shikijs/core": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.15.0.tgz", - "integrity": "sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.15.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.15.0.tgz", - "integrity": "sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.15.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.15.0.tgz", - "integrity": "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.15.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/langs": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.15.0.tgz", - "integrity": "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.15.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.15.0.tgz", - "integrity": "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.15.0" - } - }, - "node_modules/@shikijs/types": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.15.0.tgz", - "integrity": "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" - }, - "node_modules/@solid-primitives/refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@solid-primitives/refs/-/refs-1.1.2.tgz", - "integrity": "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==", - "license": "MIT", - "dependencies": { - "@solid-primitives/utils": "^6.3.2" - }, - "peerDependencies": { - "solid-js": "^1.6.12" - } - }, - "node_modules/@solid-primitives/transition-group": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@solid-primitives/transition-group/-/transition-group-1.1.2.tgz", - "integrity": "sha512-gnHS0OmcdjeoHN9n7Khu8KNrOlRc8a2weETDt2YT6o1zeW/XtUC6Db3Q9pkMU/9cCKdEmN4b0a/41MKAHRhzWA==", - "license": "MIT", - "peerDependencies": { - "solid-js": "^1.6.12" - } - }, - "node_modules/@solid-primitives/utils": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@solid-primitives/utils/-/utils-6.3.2.tgz", - "integrity": "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==", - "license": "MIT", - "peerDependencies": { - "solid-js": "^1.6.12" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@types/braces": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.5.tgz", - "integrity": "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==", - "license": "MIT" - }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "license": "MIT", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "license": "MIT" - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "license": "MIT", - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", - "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", - "license": "MIT" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "license": "MIT", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "license": "MIT" - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "license": "MIT" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "license": "MIT" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "license": "MIT" - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "license": "MIT" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "license": "MIT", - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/fontkit": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", - "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "license": "MIT" - }, - "node_modules/@types/micromatch": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.9.tgz", - "integrity": "sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==", - "license": "MIT", - "dependencies": { - "@types/braces": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/nlcst": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/node": { - "version": "18.19.123", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz", - "integrity": "sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==", - "license": "MIT" - }, - "node_modules/@types/sax": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.1.tgz", - "integrity": "sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/type-utils": "8.48.1", - "@typescript-eslint/utils": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.48.1", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.1.tgz", - "integrity": "sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.1.tgz", - "integrity": "sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.48.1", - "@typescript-eslint/types": "^8.48.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.1.tgz", - "integrity": "sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.1.tgz", - "integrity": "sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.1.tgz", - "integrity": "sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1", - "@typescript-eslint/utils": "8.48.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz", - "integrity": "sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.1.tgz", - "integrity": "sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.48.1", - "@typescript-eslint/tsconfig-utils": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/visitor-keys": "8.48.1", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.1.tgz", - "integrity": "sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.48.1", - "@typescript-eslint/types": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.1.tgz", - "integrity": "sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.1", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@vtbag/cam-shaft": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@vtbag/cam-shaft/-/cam-shaft-1.0.6.tgz", - "integrity": "sha512-Xy1bmJJLXuCqxmY2agwPfhGNv1XZViqh54H0VGK4mouGsItFsh8Mz/wWAP6mZwAOEuu9bEOJ1mJ+oNoaczZ1zw==", - "dev": true, - "license": "ISC", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/@vtbag/element-crossing": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vtbag/element-crossing/-/element-crossing-1.1.0.tgz", - "integrity": "sha512-1YL609KPwhHUKRrVNfoogQCVJPfFrE5DubOLcCJZLHVCjWZ2ZAPcaq1wR2OP6nXD0Ok9JLX41YsEtYBYzw6CxQ==", - "dev": true, - "license": "ISC", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/@vtbag/inspection-chamber": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/@vtbag/inspection-chamber/-/inspection-chamber-1.0.22.tgz", - "integrity": "sha512-M0iVmgUEjTmjX3/LEVxpNFjqZSdKN/y6otH4aD6x8c3HhJjlD9OwStJaYHS8EoiQtvmPWIdG79iXOCesXTGfaQ==", - "dev": true, - "license": "ISC", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/@vtbag/turn-signal": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vtbag/turn-signal/-/turn-signal-1.3.1.tgz", - "integrity": "sha512-6rWkG+ik3U+KQGI94yNOrOh5QedB9zmP/8H51X5WQwrJz8m2MAU5YwGRRcweO/dJ6wW/Bn7OsgC1vRURnwrvCg==", - "dev": true, - "license": "ISC", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/@vtbag/utensil-drawer": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@vtbag/utensil-drawer/-/utensil-drawer-1.2.13.tgz", - "integrity": "sha512-DXTxfqTAebGyZpiZ1vDs9IvXMYx/++GnjQNJzPWfuZsvoz4N9tSbGrUCaRQ3bd9PLZ6qGF978SNQFyfFBhah/g==", - "dev": true, - "license": "ISC", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-escapes": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz", - "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/asciinema-player": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/asciinema-player/-/asciinema-player-3.12.1.tgz", - "integrity": "sha512-X4tIjZEIsD7Keeu1cJbrsZZCbPSO85w2OiDRGui68JHQPjthIG2jh68TARDrf2CP2l1Lko4mevnBdwwmJfD0iw==", - "license": "Apache-2.0", - "dependencies": { - "@babel/runtime": "^7.21.0", - "solid-js": "^1.3.0", - "solid-transition-group": "^0.2.3" - } - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/astro": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.0.tgz", - "integrity": "sha512-GaDRs2Mngpw3dr2vc085GnORh98NiXxwIjg/EoQQQl/icZt3Z7s0BRsYHDZ8swkZbOA6wZsqWJdrNirl+iKcDg==", - "license": "MIT", - "dependencies": { - "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.9", - "@astrojs/telemetry": "3.3.0", - "@capsizecss/unpack": "^3.0.1", - "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.3.0", - "acorn": "^8.15.0", - "aria-query": "^5.3.2", - "axobject-query": "^4.1.0", - "boxen": "8.0.1", - "ci-info": "^4.3.1", - "clsx": "^2.1.1", - "common-ancestor-path": "^1.0.1", - "cookie": "^1.0.2", - "cssesc": "^3.0.0", - "debug": "^4.4.3", - "deterministic-object-hash": "^2.0.2", - "devalue": "^5.5.0", - "diff": "^5.2.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", - "estree-walker": "^3.0.3", - "flattie": "^1.1.1", - "fontace": "~0.3.1", - "github-slugger": "^2.0.0", - "html-escaper": "3.0.3", - "http-cache-semantics": "^4.2.0", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.1", - "magic-string": "^0.30.21", - "magicast": "^0.5.1", - "mrmime": "^2.0.1", - "neotraverse": "^0.6.18", - "p-limit": "^6.2.0", - "p-queue": "^8.1.1", - "package-manager-detector": "^1.5.0", - "piccolore": "^0.1.3", - "picomatch": "^4.0.3", - "prompts": "^2.4.2", - "rehype": "^13.0.2", - "semver": "^7.7.3", - "shiki": "^3.15.0", - "smol-toml": "^1.5.0", - "svgo": "^4.0.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tsconfck": "^3.1.6", - "ultrahtml": "^1.6.0", - "unifont": "~0.6.0", - "unist-util-visit": "^5.0.0", - "unstorage": "^1.17.2", - "vfile": "^6.0.3", - "vite": "^6.4.1", - "vitefu": "^1.1.1", - "xxhash-wasm": "^1.1.0", - "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.2.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6", - "zod-to-ts": "^1.2.0" - }, - "bin": { - "astro": "astro.js" - }, - "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/astrodotbuild" - }, - "optionalDependencies": { - "sharp": "^0.34.0" - } - }, - "node_modules/astro-auto-import": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/astro-auto-import/-/astro-auto-import-0.4.4.tgz", - "integrity": "sha512-tiYe1hp+VusdiyaD3INgZgbvXEPamDFiURnQR5Niz+E9fWa6IHYjJ99TwGlHh/evfaXE/U/86jp9MRKWTuJU1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^18.0.0", - "acorn": "^8.8.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/astro-embed": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/astro-embed/-/astro-embed-0.9.1.tgz", - "integrity": "sha512-l3lkPsluDOf/FeHWfBU1+7srAcHrByu/Z1dSr3iAheSVYJfSBpAmYnSsHG90NuIK/8Mr3tg0AhNE2JJy3an/zA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astro-community/astro-embed-baseline-status": "^0.2.0", - "@astro-community/astro-embed-bluesky": "^0.1.0", - "@astro-community/astro-embed-integration": "^0.8.0", - "@astro-community/astro-embed-link-preview": "^0.2.2", - "@astro-community/astro-embed-twitter": "^0.5.6", - "@astro-community/astro-embed-vimeo": "^0.3.10", - "@astro-community/astro-embed-youtube": "^0.5.5" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, - "node_modules/astro-expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.3.tgz", - "integrity": "sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==", - "license": "MIT", - "dependencies": { - "rehype-expressive-code": "^0.41.3" - }, - "peerDependencies": { - "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" - } - }, - "node_modules/astro-mermaid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/astro-mermaid/-/astro-mermaid-1.1.0.tgz", - "integrity": "sha512-eW5aqOISq2Uf8goCedSl12d0qy8y77A+jRwKxwYc7LvrEN9HiCQuwTGu3zQvi0mB4+ydwaueaYbFUFSCIs2jrA==", - "license": "MIT", - "dependencies": { - "import-meta-resolve": "^4.2.0", - "mdast-util-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "peerDependencies": { - "@mermaid-js/layout-elk": "^0.2.0", - "astro": "^4.0.0 || ^5.0.0", - "mermaid": "^10.0.0 || ^11.0.0" - }, - "peerDependenciesMeta": { - "@mermaid-js/layout-elk": { - "optional": true - } - } - }, - "node_modules/astro-tooltips": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/astro-tooltips/-/astro-tooltips-0.6.2.tgz", - "integrity": "sha512-I9uXbchctnRqbc0mnxKcBRfweMuql/U+619+MzNvq3kANc7xthOXj6cMNgAkTaXoHJLdFMKL3Fx6vB5cyiiRXg==", - "license": "ISC", - "dependencies": { - "tippy.js": "6.3.7" - } - }, - "node_modules/astro-vtbot": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/astro-vtbot/-/astro-vtbot-2.1.9.tgz", - "integrity": "sha512-7YfeHtUwyajC1TLxpKwETLpO7oGGXWazVTkGjRpjXCKRxQDYfExeuUGzU7GNqN/gsOqUtL5EEjojVpjPPhjBqQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@vtbag/cam-shaft": "^1.0.6", - "@vtbag/element-crossing": "^1.1.0", - "@vtbag/inspection-chamber": "^1.0.22", - "@vtbag/turn-signal": "^1.3.1", - "@vtbag/utensil-drawer": "^1.2.13" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/martrapp" - } - }, - "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", - "license": "MIT" - }, - "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.9", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.9.tgz", - "integrity": "sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.13.0", - "smol-toml": "^1.4.2", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.2", - "vfile": "^6.0.3" - } - }, - "node_modules/await-lock": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", - "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT" - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcp-47": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", - "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/bcp-47-match": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", - "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/boxen": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", - "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^8.0.0", - "chalk": "^5.3.0", - "cli-boxes": "^3.0.0", - "string-width": "^7.2.0", - "type-fest": "^4.21.0", - "widest-line": "^5.0.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.1.2" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", - "license": "MIT" - }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "license": "MIT", - "dependencies": { - "layout-base": "^1.0.0" - } - }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crossws": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", - "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", - "license": "MIT", - "dependencies": { - "uncrypto": "^0.1.3" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-selector-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz", - "integrity": "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/cytoscape": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", - "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "license": "MIT", - "dependencies": { - "layout-base": "^2.0.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", - "license": "MIT" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "license": "ISC", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "license": "ISC", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "license": "ISC", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "license": "ISC", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "license": "BSD-3-Clause", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "license": "BSD-3-Clause", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "license": "ISC" - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", - "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", - "license": "MIT", - "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/dayjs": { - "version": "1.11.18", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "license": "MIT" - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/deterministic-object-hash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", - "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", - "license": "MIT", - "dependencies": { - "base-64": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/devalue": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", - "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", - "license": "MIT" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dfa": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", - "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", - "license": "MIT" - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/direction": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", - "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", - "license": "MIT", - "bin": { - "direction": "cli.js" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dset": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", - "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT" - }, - "node_modules/esast-util-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", - "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esast-util-from-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", - "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "acorn": "^8.0.0", - "esast-util-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-build-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-walker": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-scope": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", - "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-to-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.3.tgz", - "integrity": "sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.41.3", - "@expressive-code/plugin-frames": "^0.41.3", - "@expressive-code/plugin-shiki": "^0.41.3", - "@expressive-code/plugin-text-markers": "^0.41.3" - } - }, - "node_modules/exsolve": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", - "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.0.tgz", - "integrity": "sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-entry-cache/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/flattie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", - "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/fontace": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.1.tgz", - "integrity": "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==", - "license": "MIT", - "dependencies": { - "@types/fontkit": "^2.0.8", - "fontkit": "^2.0.4" - } - }, - "node_modules/fontkit": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", - "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", - "license": "MIT", - "dependencies": { - "@swc/helpers": "^0.5.12", - "brotli": "^1.3.2", - "clone": "^2.1.2", - "dfa": "^1.2.0", - "fast-deep-equal": "^3.1.3", - "restructure": "^3.0.0", - "tiny-inflate": "^1.0.3", - "unicode-properties": "^1.4.0", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-port": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", - "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, - "node_modules/h3": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", - "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", - "license": "MIT", - "dependencies": { - "cookie-es": "^1.2.2", - "crossws": "^0.3.5", - "defu": "^6.1.4", - "destr": "^2.0.5", - "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.2", - "radix3": "^1.1.2", - "ufo": "^1.6.1", - "uncrypto": "^0.1.3" - } - }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", - "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hast-util-embedded": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", - "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-is-element": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", - "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-embedded": "^3.0.0", - "hast-util-minify-whitespace": "^1.0.0", - "hast-util-phrasing": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "html-whitespace-sensitive-tag-names": "^3.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^7.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-has-property": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", - "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-body-ok-link": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", - "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-minify-whitespace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", - "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-embedded": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-embedded": "^3.0.0", - "hast-util-has-property": "^3.0.0", - "hast-util-is-body-ok-link": "^3.0.0", - "hast-util-is-element": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", - "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-select": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", - "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "bcp-47-match": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "css-selector-parser": "^3.0.0", - "devlop": "^1.0.0", - "direction": "^2.0.0", - "hast-util-has-property": "^3.0.0", - "hast-util-to-string": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "nth-check": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", - "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-phrasing": "^3.0.0", - "hast-util-to-html": "^9.0.0", - "hast-util-to-text": "^4.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "mdast-util-to-string": "^4.0.0", - "rehype-minify-whitespace": "^6.0.0", - "trim-trailing-lines": "^2.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "license": "MIT" - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/html-whitespace-sensitive-tag-names": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", - "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause" - }, - "node_modules/i18next": { - "version": "23.16.8", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", - "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", - "funding": [ - { - "type": "individual", - "url": "https://locize.com" - }, - { - "type": "individual", - "url": "https://locize.com/i18next.html" - }, - { - "type": "individual", - "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" - } - ], - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.2" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "license": "MIT" - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/iron-webcrypto": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", - "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/brc-dd" - } - }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iso-datestring-validator": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", - "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==", - "license": "MIT" - }, - "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "license": "MIT" - }, - "node_modules/langium": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", - "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", - "license": "MIT", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/layout-base": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", - "license": "MIT" - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/linkedom": { - "version": "0.18.12", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.12.tgz", - "integrity": "sha512-jalJsOwIKuQJSeTvsgzPe9iJzyfVaEJiEXl+25EkKevsULHvMJzpNqwvj1jOESWdmgKDiXObyjOYwlUqG7wo1Q==", - "license": "ISC", - "dependencies": { - "css-select": "^5.1.0", - "cssom": "^0.5.0", - "html-escaper": "^3.0.3", - "htmlparser2": "^10.0.0", - "uhyphen": "^0.2.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "canvas": ">= 2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/lite-youtube-embed": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.3.4.tgz", - "integrity": "sha512-aXgxpwK7AIW58GEbRzA8EYaY4LWvF3FKak6B9OtSJmuNyLhX2ouD4cMTxz/yR5HFInhknaYd2jLWOTRTvT8oAw==", - "license": "Apache-2.0" - }, - "node_modules/local-pkg": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", - "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", - "license": "MIT", - "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.3.0", - "quansync": "^0.2.11" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/magicast": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", - "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "source-map-js": "^1.2.1" - } - }, - "node_modules/markdown-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", - "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdown-table": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/marked": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz", - "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/mdast-util-definitions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", - "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-directive": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", - "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "license": "CC0-1.0" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/mermaid": { - "version": "11.12.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.1.tgz", - "integrity": "sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==", - "license": "MIT", - "dependencies": { - "@braintree/sanitize-url": "^7.1.1", - "@iconify/utils": "^3.0.1", - "@mermaid-js/parser": "^0.6.3", - "@types/d3": "^7.4.3", - "cytoscape": "^3.29.3", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - "d3": "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.13", - "dayjs": "^1.11.18", - "dompurify": "^3.2.5", - "katex": "^0.16.22", - "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^16.2.1", - "roughjs": "^4.6.6", - "stylis": "^4.3.6", - "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-directive": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", - "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "parse-entities": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "license": "MIT", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", - "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", - "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "license": "MIT", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^3.0.0", - "micromark-extension-mdx-jsx": "^3.0.0", - "micromark-extension-mdx-md": "^2.0.0", - "micromark-extension-mdxjs-esm": "^3.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", - "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", - "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", - "license": "(Apache-2.0 AND MIT)" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neotraverse": { - "version": "0.6.18", - "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", - "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/nlcst-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-fetch-native": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", - "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", - "license": "MIT" - }, - "node_modules/node-mock-http": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.3.tgz", - "integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==", - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/ofetch": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", - "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", - "license": "MIT", - "dependencies": { - "destr": "^2.0.5", - "node-fetch-native": "^1.6.7", - "ufo": "^1.6.1" - } - }, - "node_modules/ohash": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", - "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", - "license": "MIT" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/oniguruma-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", - "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", - "license": "MIT" - }, - "node_modules/oniguruma-to-es": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", - "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", - "license": "MIT", - "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", - "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-manager-detector": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", - "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", - "license": "MIT" - }, - "node_modules/pagefind": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.3.0.tgz", - "integrity": "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==", - "license": "MIT", - "bin": { - "pagefind": "lib/runner/bin.cjs" - }, - "optionalDependencies": { - "@pagefind/darwin-arm64": "1.3.0", - "@pagefind/darwin-x64": "1.3.0", - "@pagefind/linux-arm64": "1.3.0", - "@pagefind/linux-x64": "1.3.0", - "@pagefind/windows-x64": "1.3.0" - } - }, - "node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "license": "MIT" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/parse-latin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0", - "@types/unist": "^3.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-modify-children": "^4.0.0", - "unist-util-visit-children": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/piccolore": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", - "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", - "license": "ISC" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", - "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", - "license": "MIT", - "dependencies": { - "confbox": "^0.2.2", - "exsolve": "^1.0.7", - "pathe": "^2.0.3" - } - }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", - "license": "MIT" - }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "license": "MIT", - "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-astro": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", - "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@astrojs/compiler": "^2.9.1", - "prettier": "^3.0.0", - "sass-formatter": "^0.7.6" - }, - "engines": { - "node": "^14.15.0 || >=16.0.0" - } - }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/property-information": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/quansync": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", - "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/radix3": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", - "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/recma-build-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", - "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-util-build-jsx": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/recma-jsx": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", - "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", - "license": "MIT", - "dependencies": { - "acorn-jsx": "^5.0.0", - "estree-util-to-js": "^2.0.0", - "recma-parse": "^1.0.0", - "recma-stringify": "^1.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/recma-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", - "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "esast-util-from-js": "^2.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/recma-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", - "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-util-to-js": "^2.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT" - }, - "node_modules/rehype": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", - "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "rehype-parse": "^9.0.0", - "rehype-stringify": "^10.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-expressive-code": { - "version": "0.41.3", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.3.tgz", - "integrity": "sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==", - "license": "MIT", - "dependencies": { - "expressive-code": "^0.41.3" - } - }, - "node_modules/rehype-format": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", - "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-format": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-minify-whitespace": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", - "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-minify-whitespace": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-raw": "^9.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-recma": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", - "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "hast-util-to-estree": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-10.0.1.tgz", - "integrity": "sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "hast-util-to-mdast": "^10.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-stringify": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", - "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-to-html": "^9.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-directive": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-4.0.0.tgz", - "integrity": "sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-directive": "^3.0.0", - "micromark-extension-directive": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", - "license": "MIT", - "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", - "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-smartypants": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", - "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", - "license": "MIT", - "dependencies": { - "retext": "^9.0.0", - "retext-smartypants": "^6.0.0", - "unified": "^11.0.4", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/restructure": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", - "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", - "license": "MIT" - }, - "node_modules/retext": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", - "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0", - "retext-latin": "^4.0.0", - "retext-stringify": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", - "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", - "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", - "license": "MIT", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense" - }, - "node_modules/rollup": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.49.0.tgz", - "integrity": "sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==", - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.49.0", - "@rollup/rollup-android-arm64": "4.49.0", - "@rollup/rollup-darwin-arm64": "4.49.0", - "@rollup/rollup-darwin-x64": "4.49.0", - "@rollup/rollup-freebsd-arm64": "4.49.0", - "@rollup/rollup-freebsd-x64": "4.49.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.49.0", - "@rollup/rollup-linux-arm-musleabihf": "4.49.0", - "@rollup/rollup-linux-arm64-gnu": "4.49.0", - "@rollup/rollup-linux-arm64-musl": "4.49.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.49.0", - "@rollup/rollup-linux-ppc64-gnu": "4.49.0", - "@rollup/rollup-linux-riscv64-gnu": "4.49.0", - "@rollup/rollup-linux-riscv64-musl": "4.49.0", - "@rollup/rollup-linux-s390x-gnu": "4.49.0", - "@rollup/rollup-linux-x64-gnu": "4.49.0", - "@rollup/rollup-linux-x64-musl": "4.49.0", - "@rollup/rollup-win32-arm64-msvc": "4.49.0", - "@rollup/rollup-win32-ia32-msvc": "4.49.0", - "@rollup/rollup-win32-x64-msvc": "4.49.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", - "license": "MIT", - "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause" - }, - "node_modules/s.color": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", - "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", - "dev": true, - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sass-formatter": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", - "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "suf-log": "^2.5.3" - } - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/seroval": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", - "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/seroval-plugins": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.3.2.tgz", - "integrity": "sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "seroval": "^1.0" - } - }, - "node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.2", - "semver": "^7.7.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.15.0.tgz", - "integrity": "sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "3.15.0", - "@shikijs/engine-javascript": "3.15.0", - "@shikijs/engine-oniguruma": "3.15.0", - "@shikijs/langs": "3.15.0", - "@shikijs/themes": "3.15.0", - "@shikijs/types": "3.15.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/simple-git": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz", - "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==", - "license": "MIT", - "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/steveukx/git-js?sponsor=1" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/sitemap": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz", - "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==", - "license": "MIT", - "dependencies": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "bin": { - "sitemap": "dist/cli.js" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/sitemap/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "license": "MIT" - }, - "node_modules/smol-toml": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", - "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, - "node_modules/solid-js": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.9.tgz", - "integrity": "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==", - "license": "MIT", - "dependencies": { - "csstype": "^3.1.0", - "seroval": "~1.3.0", - "seroval-plugins": "~1.3.0" - } - }, - "node_modules/solid-transition-group": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/solid-transition-group/-/solid-transition-group-0.2.3.tgz", - "integrity": "sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==", - "license": "MIT", - "dependencies": { - "@solid-primitives/refs": "^1.0.5", - "@solid-primitives/transition-group": "^1.0.2" - }, - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.6.0" - }, - "peerDependencies": { - "solid-js": "^1.6.12" - } - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/starlight-contributor-list": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/starlight-contributor-list/-/starlight-contributor-list-0.3.1.tgz", - "integrity": "sha512-8F3BcnqeCgvI/OcagJCBsp71/XU9/zDiuSmsgAkWrRTxql0H2bG9Z9VXvmwzB/569QVlAsOwK7StAxDxqG6Myw==", - "license": "MIT", - "dependencies": { - "@11ty/eleventy-fetch": "^4.0.1" - }, - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=21.0.0" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.30" - } - }, - "node_modules/starlight-giscus": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/starlight-giscus/-/starlight-giscus-0.8.1.tgz", - "integrity": "sha512-etgWym6KpHeNSkbggEhpGEPNaLIwypWdvE7BxNFHGUkjiq6EYSJhr5zoMGZ9QfnMdkcj8PqKrJTM88YdCSEiDQ==", - "license": "MIT", - "engines": { - "node": "^18.20.8 || ^20.3.0 || >=22.0.0" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.35.0" - } - }, - "node_modules/starlight-github-alerts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/starlight-github-alerts/-/starlight-github-alerts-0.1.1.tgz", - "integrity": "sha512-HzVp24sO2VoqJ65H58rh/HRBBc/DGUE5tdQYi3kkckdRHLZJUIkBa7EMF3dyiFw1rTRAzSN5t8r9riijnNvIzA==", - "license": "MIT", - "dependencies": { - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=18.17.1" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.35.0" - } - }, - "node_modules/starlight-image-zoom": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/starlight-image-zoom/-/starlight-image-zoom-0.13.2.tgz", - "integrity": "sha512-fDJrx+UZXhkbhEeXKoRogTKAYtrYVJPw6wmSUI3nHUTA0vuRM6EI//2Z8bzv3Ecvz0pHKD1vAxtS01mLyessBA==", - "license": "MIT", - "dependencies": { - "mdast-util-mdx-jsx": "^3.1.3", - "rehype-raw": "^7.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.32.0" - } - }, - "node_modules/starlight-kbd": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/starlight-kbd/-/starlight-kbd-0.2.1.tgz", - "integrity": "sha512-kFDWkB99GSk1korUrHezRxcjLhQ53axDyI9oZakEPB5ZNU3b+uwp2kVMhEg6B5yzekwFgf84UlNiWu9lYpfMoA==", - "license": "MIT", - "engines": { - "node": ">=18.17.1" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.32.0" - } - }, - "node_modules/starlight-links-validator": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.19.1.tgz", - "integrity": "sha512-Ermpe7zJG5uRJUqIWflX4VNLozOBX2/N4XvHvyaPQcHsfdN7y81qEd3n56PYdVb3Tj4/6ZFFSfAtiCe78XtBVw==", - "license": "MIT", - "dependencies": { - "@types/picomatch": "^3.0.1", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-has-property": "^3.0.0", - "is-absolute-url": "^4.0.1", - "kleur": "^4.1.5", - "mdast-util-mdx-jsx": "^3.1.3", - "mdast-util-to-string": "^4.0.0", - "picomatch": "^4.0.2", - "terminal-link": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=18.17.1" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.32.0" - } - }, - "node_modules/starlight-llms-txt": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/starlight-llms-txt/-/starlight-llms-txt-0.6.0.tgz", - "integrity": "sha512-mKkRPlGZ+kKJlnclXkW3s+RSVF/10Ct2BsQ4dYDaK8j4h/L55WbZCds1PsqQiLYPrDp7wIN6gm7LYsrUlGaBjQ==", - "license": "MIT", - "dependencies": { - "@astrojs/mdx": "^4.0.5", - "@types/hast": "^3.0.4", - "@types/micromatch": "^4.0.9", - "github-slugger": "^2.0.0", - "hast-util-select": "^6.0.3", - "micromatch": "^4.0.8", - "rehype-parse": "^9.0.1", - "rehype-remark": "^10.0.0", - "remark-gfm": "^4.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.5", - "unist-util-remove": "^4.0.0" - }, - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=21.0.0" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.31", - "astro": "^5.1.6" - } - }, - "node_modules/starlight-scroll-to-top": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/starlight-scroll-to-top/-/starlight-scroll-to-top-0.4.0.tgz", - "integrity": "sha512-lxsW5Sv+oKCI8CYZQ6Ue957cExiHMozK73LmmbsvpBKWryW+AKU4OXmX/1bTQNx+mVLZcpm2qTwKa1KX5VdEaQ==", - "license": "MIT", - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=21.0.0" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.35" - } - }, - "node_modules/starlight-sidebar-topics": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/starlight-sidebar-topics/-/starlight-sidebar-topics-0.6.2.tgz", - "integrity": "sha512-SNCTUZS/hcVor0ZcaXbaSVU37+V+qtvzNirkvnOg3Mqu/awuGpthkH5+uKpiZqWxLffp6TrOlsv5E5QsxrndNg==", - "license": "MIT", - "dependencies": { - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.32.0" - } - }, - "node_modules/stream-replace-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", - "license": "MIT" - }, - "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/style-to-js": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", - "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", - "license": "MIT", - "dependencies": { - "style-to-object": "1.0.9" - } - }, - "node_modules/style-to-object": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", - "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.2.4" - } - }, - "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "license": "MIT" - }, - "node_modules/suf-log": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", - "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", - "dev": true, - "license": "MIT", - "dependencies": { - "s.color": "0.0.15" - } - }, - "node_modules/supports-color": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", - "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-hyperlinks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.3.0.tgz", - "integrity": "sha512-i6sWEzuwadSlcr2mOnb0ktlIl+K5FVxsPXmoPfknDd2gyw4ZBIAZ5coc0NQzYqDdEYXMHy8NaY9rWwa1Q1myiQ==", - "license": "MIT", - "dependencies": { - "has-flag": "^5.0.1", - "supports-color": "^10.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" - } - }, - "node_modules/svgo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", - "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", - "license": "MIT", - "dependencies": { - "commander": "^11.1.0", - "css-select": "^5.1.0", - "css-tree": "^3.0.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.1.1", - "sax": "^1.4.1" - }, - "bin": { - "svgo": "bin/svgo.js" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/terminal-link": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-5.0.0.tgz", - "integrity": "sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "supports-hyperlinks": "^4.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "license": "MIT", - "dependencies": { - "@popperjs/core": "^2.9.0" - } - }, - "node_modules/tlds": { - "version": "1.260.0", - "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.260.0.tgz", - "integrity": "sha512-78+28EWBhCEE7qlyaHA9OR3IPvbCLiDh3Ckla593TksfFc9vfTsgvH7eS+dr3o9qr31gwGbogcI16yN91PoRjQ==", - "license": "MIT", - "bin": { - "tlds": "bin.js" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trim-trailing-lines": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", - "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/ts-pattern": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.8.0.tgz", - "integrity": "sha512-kIjN2qmWiHnhgr5DAkAafF9fwb0T5OhMVSWrm8XEdTFnX6+wfXwYOFjeF86UZ54vduqiR7BfqScFmXSzSaH8oA==", - "license": "MIT" - }, - "node_modules/tsconfck": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", - "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", - "license": "MIT", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.48.1.tgz", - "integrity": "sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.48.1", - "@typescript-eslint/parser": "8.48.1", - "@typescript-eslint/typescript-estree": "8.48.1", - "@typescript-eslint/utils": "8.48.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "license": "MIT" - }, - "node_modules/uhyphen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz", - "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==", - "license": "ISC" - }, - "node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ultrahtml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", - "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", - "license": "MIT" - }, - "node_modules/ultramatter": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ultramatter/-/ultramatter-0.0.4.tgz", - "integrity": "sha512-1f/hO3mR+/Hgue4eInOF/Qm/wzDqwhYha4DxM0hre9YIUyso3fE2XtrAU6B4njLqTC8CM49EZaYgsVSa+dXHGw==", - "license": "MIT" - }, - "node_modules/uncrypto": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", - "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, - "node_modules/unicode-properties": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", - "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.0", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/unicode-trie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", - "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", - "license": "MIT", - "dependencies": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unifont": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.6.0.tgz", - "integrity": "sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==", - "license": "MIT", - "dependencies": { - "css-tree": "^3.0.0", - "ofetch": "^1.4.1", - "ohash": "^2.0.0" - } - }, - "node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-modify-children": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "array-iterate": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", - "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-select": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-4.0.3.tgz", - "integrity": "sha512-1074+K9VyR3NyUz3lgNtHKm7ln+jSZXtLJM4E22uVuoFn88a/Go2pX8dusrt/W+KWH1ncn8jcd8uCQuvXb/fXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "css-selector-parser": "^1.0.0", - "nth-check": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-select/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-select/node_modules/css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-children": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", - "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unstorage": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.2.tgz", - "integrity": "sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==", - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.4", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.7", - "ofetch": "^1.5.0", - "ufo": "^1.6.1" - }, - "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.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/functions": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/vanilla-cookieconsent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vanilla-cookieconsent/-/vanilla-cookieconsent-3.1.0.tgz", - "integrity": "sha512-/McNRtm/3IXzb9dhqMIcbquoU45SzbN2VB+To4jxEPqMmp7uVniP6BhGLjU8MC7ZCDsNQVOp27fhQTM/ruIXAA==", - "license": "MIT" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", - "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", - "license": "MIT", - "workspaces": [ - "tests/deps/*", - "tests/projects/*", - "tests/projects/workspace/packages/*" - ], - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "license": "MIT" - }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", - "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", - "license": "MIT", - "dependencies": { - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/xxhash-wasm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", - "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", - "license": "MIT" - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yocto-spinner": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", - "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", - "license": "MIT", - "dependencies": { - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18.19" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } - }, - "node_modules/zod-to-ts": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", - "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", - "peerDependencies": { - "typescript": "^4.9.4 || ^5.0.2", - "zod": "^3" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/src/frontend/package.json b/src/frontend/package.json index 8dcba714..85f15ee8 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -15,19 +15,19 @@ "scripts": { "git-env": "node ./scripts/write-git-env.mjs", "check-data": "node ./scripts/check-data-files.mjs", - "dev": "npm run git-env && npm run check-data && astro dev", - "dev:host": "npm run git-env && npm run check-data && astro dev --host", - "start": "npm run git-env && npm run check-data && astro dev", - "start:host": "npm run git-env && npm run check-data && astro dev --host", - "build": "npm run git-env && npm run update:all && astro build", - "build:production": "npm run git-env && npm run update:all && astro build --mode production", - "preview": "npm run git-env && astro preview", - "preview:host": "npm run git-env && astro preview --host", - "astro": "npm run git-env && astro", + "dev": "pnpm run git-env && pnpm run check-data && astro dev", + "dev:host": "pnpm run git-env && pnpm run check-data && astro dev --host", + "start": "pnpm run git-env && pnpm run check-data && astro dev", + "start:host": "pnpm run git-env && pnpm run check-data && astro dev --host", + "build": "pnpm run git-env && pnpm run update:all && astro build", + "build:production": "pnpm run git-env && pnpm run update:all && astro build --mode production", + "preview": "pnpm run git-env && astro preview", + "preview:host": "pnpm run git-env && astro preview --host", + "astro": "pnpm run git-env && astro", "lint": "eslint . --max-warnings 0", "format": "prettier -w --cache --plugin prettier-plugin-astro .", - "linkcheck": "npm run git-env && npm run update:all && cross-env CHECK_LINKS=true astro build", - "update:all": "npm run update:integrations && npm run update:github-stats", + "linkcheck": "pnpm run git-env && pnpm run update:all && cross-env CHECK_LINKS=true astro build", + "update:all": "pnpm run update:integrations && pnpm run update:github-stats", "update:integrations": "node ./scripts/update-integrations.js", "update:github-stats": "node ./scripts/update-github-stats.js", "update:posts": "node ./scripts/update-posts.js" diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml new file mode 100644 index 00000000..47d38161 --- /dev/null +++ b/src/frontend/pnpm-lock.yaml @@ -0,0 +1,7363 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@astro-community/astro-embed-bluesky': + specifier: ^0.1.5 + version: 0.1.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-vimeo': + specifier: ^0.3.11 + version: 0.3.11(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-youtube': + specifier: ^0.5.9 + version: 0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/rss': + specifier: ^4.0.14 + version: 4.0.14 + '@astrojs/starlight': + specifier: ^0.36.2 + version: 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@catppuccin/starlight': + specifier: ^1.0.2 + version: 1.0.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@expressive-code/plugin-collapsible-sections': + specifier: ^0.41.3 + version: 0.41.3 + '@expressive-code/plugin-line-numbers': + specifier: ^0.41.3 + version: 0.41.3 + '@fontsource-variable/fira-code': + specifier: ^5.2.7 + version: 5.2.7 + '@fontsource-variable/outfit': + specifier: ^5.2.7 + version: 5.2.8 + '@fontsource-variable/rubik': + specifier: ^5.2.8 + version: 5.2.8 + '@fontsource/poppins': + specifier: ^5.2.7 + version: 5.2.7 + '@jop-software/astro-cookieconsent': + specifier: ^3.0.1 + version: 3.0.1(vanilla-cookieconsent@3.1.0) + '@lunariajs/starlight': + specifier: ^0.1.1 + version: 0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + asciinema-player: + specifier: ^3.12.1 + version: 3.12.1 + astro: + specifier: ^5.16.0 + version: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + astro-mermaid: + specifier: ^1.1.0 + version: 1.2.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))(mermaid@11.12.2) + astro-tooltips: + specifier: ^0.6.2 + version: 0.6.2 + mermaid: + specifier: ^11.12.1 + version: 11.12.2 + remark-directive: + specifier: ^4.0.0 + version: 4.0.0 + sharp: + specifier: ^0.34.5 + version: 0.34.5 + starlight-contributor-list: + specifier: ^0.3.1 + version: 0.3.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-giscus: + specifier: ^0.8.1 + version: 0.8.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-github-alerts: + specifier: ^0.1.1 + version: 0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-image-zoom: + specifier: ^0.13.2 + version: 0.13.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-kbd: + specifier: ^0.2.1 + version: 0.2.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-links-validator: + specifier: ^0.19.1 + version: 0.19.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + starlight-llms-txt: + specifier: ^0.6.0 + version: 0.6.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + starlight-scroll-to-top: + specifier: ^0.4.0 + version: 0.4.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + starlight-sidebar-topics: + specifier: ^0.6.2 + version: 0.6.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + vanilla-cookieconsent: + specifier: ^3.1.0 + version: 3.1.0 + devDependencies: + '@eslint/js': + specifier: ^9.39.1 + version: 9.39.1 + astro-embed: + specifier: ^0.9.1 + version: 0.9.2(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + astro-vtbot: + specifier: ^2.1.9 + version: 2.1.9 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + eslint: + specifier: ^9.39.1 + version: 9.39.1(jiti@1.21.7) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.1(jiti@1.21.7)) + node-fetch: + specifier: ^3.3.2 + version: 3.3.2 + prettier: + specifier: ^3.7.4 + version: 3.7.4 + prettier-plugin-astro: + specifier: ^0.14.1 + version: 0.14.1 + typescript-eslint: + specifier: ^8.48.1 + version: 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + +packages: + + '@11ty/eleventy-fetch@4.0.1': + resolution: {integrity: sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==} + engines: {node: '>=14'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@anthropic-ai/claude-code@1.0.128': + resolution: {integrity: sha512-uUg5cFMJfeQetQzFw76Vpbro6DAXst2Lpu8aoZWRFSoQVYu5ZSAnbBoxaWmW/IgnHSqIIvtMwzCoqmcA9j9rNQ==} + engines: {node: '>=18.0.0'} + hasBin: true + + '@astro-community/astro-embed-baseline-status@0.2.1': + resolution: {integrity: sha512-IGEcAzjQ3OVVEbB0yB7GDlYz3TpY1X4ZBDz2+ejRP0yW3VZuPeWyoIffuKm9iGUomnqXs6hoVR6/vK0OmLXZRA==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta + + '@astro-community/astro-embed-bluesky@0.1.5': + resolution: {integrity: sha512-/0wruqqgcbB/z8KnUGETURvNwct5cKBcPit/gJus7oOQctT8+wUjWcIlCn3uyqaZUq6ghpbRsj2eSD75rJZzSQ==} + peerDependencies: + astro: ^4.0.0 || ^5.0.0-beta.0 + + '@astro-community/astro-embed-integration@0.8.3': + resolution: {integrity: sha512-lJfPOiol8lTay5kJHT3C4CmM6shF6mF2YZR2tSpM4F+D1tj26PZ937r0iHhUcOLPeQPmczZbs9Tx1WwDY4SjOQ==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + '@astro-community/astro-embed-link-preview@0.2.3': + resolution: {integrity: sha512-TLnZOihoQhXOCybvbzE/ImqFkGgG5zSJeWIj+PytM41Q/uhU6w19LD571qmWADf0Grv/u7LtorR1PB6ijQnazQ==} + + '@astro-community/astro-embed-twitter@0.5.9': + resolution: {integrity: sha512-bTIP/2LB3iEzlZ58L7dFyLJuWLeFDXgzZUQZKlWIfsXiKYqKIfLTQ01U10sh9UiHpm1M+4kOVPpue5LbUpJXHw==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + '@astro-community/astro-embed-utils@0.1.5': + resolution: {integrity: sha512-0RlP7J1YEWrguWDfEDsm4uDCXk4FKn0HHakmSOSwHLg6YR8WNEN/LGMGhhsxLc/mDqO2lRh1VqfJy+yPLLkzsQ==} + + '@astro-community/astro-embed-vimeo@0.3.11': + resolution: {integrity: sha512-uvTLmG5z9WGoyKac86Fxh6YnmBwlEQOalbi1/BatUy9zfQ/5x8rFs+U5xiM1nW38dGmDw/Hj7Nq3ljnZxy6PMA==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + '@astro-community/astro-embed-youtube@0.5.9': + resolution: {integrity: sha512-8Uk2SKbyZVb+jxwqSAMoEpQo+063XYwCI3yRy9cbkyHpu09mDabGZNTF5XrL8CKr3NtR5haBkeYK/kSuKUkJ/g==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + '@astrojs/compiler@2.13.0': + resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} + + '@astrojs/internal-helpers@0.7.5': + resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} + + '@astrojs/markdown-remark@6.3.9': + resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} + + '@astrojs/mdx@4.3.12': + resolution: {integrity: sha512-pL3CVPtuQrPnDhWjy7zqbOibNyPaxP4VpQS8T8spwKqKzauJ4yoKyNkVTD8jrP7EAJHmBhZ7PTmUGZqOpKKp8g==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + astro: ^5.0.0 + + '@astrojs/prism@3.3.0': + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@astrojs/rss@4.0.14': + resolution: {integrity: sha512-KCe1imDcADKOOuO/wtKOMDO/umsBD6DWF+94r5auna1jKl5fmlK9vzf+sjA3EyveXA/FoB3khtQ/u/tQgETmTw==} + + '@astrojs/sitemap@3.6.0': + resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} + + '@astrojs/starlight@0.36.3': + resolution: {integrity: sha512-5cm4QVQHUP6ZE52O43TtUpsTvLKdZa9XEs4l3suzuY7Ymsbz4ojtoL9NhistbMqM+/qk6fm6SmxbOL6hQ/LfNA==} + peerDependencies: + astro: ^5.5.0 + + '@astrojs/telemetry@3.3.0': + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@atproto/api@0.13.35': + resolution: {integrity: sha512-vsEfBj0C333TLjDppvTdTE0IdKlXuljKSveAeI4PPx/l6eUKNnDTsYxvILtXUVzwUlTDmSRqy5O4Ryh78n1b7g==} + + '@atproto/common-web@0.4.6': + resolution: {integrity: sha512-+2mG/1oBcB/ZmYIU1ltrFMIiuy9aByKAkb2Fos/0eTdczcLBaH17k0KoxMGvhfsujN2r62XlanOAMzysa7lv1g==} + + '@atproto/lex-data@0.0.2': + resolution: {integrity: sha512-euV2rDGi+coH8qvZOU+ieUOEbwPwff9ca6IiXIqjZJ76AvlIpj7vtAyIRCxHUW2BoU6h9yqyJgn9MKD2a7oIwg==} + + '@atproto/lex-json@0.0.2': + resolution: {integrity: sha512-Pd72lO+l2rhOTutnf11omh9ZkoB/elbzE3HSmn2wuZlyH1mRhTYvoH8BOGokWQwbZkCE8LL3nOqMT3gHCD2l7g==} + + '@atproto/lexicon@0.4.14': + resolution: {integrity: sha512-jiKpmH1QER3Gvc7JVY5brwrfo+etFoe57tKPQX/SmPwjvUsFnJAow5xLIryuBaJgFAhnTZViXKs41t//pahGHQ==} + + '@atproto/syntax@0.3.4': + resolution: {integrity: sha512-8CNmi5DipOLaVeSMPggMe7FCksVag0aO6XZy9WflbduTKM4dFZVCs4686UeMLfGRXX+X966XgwECHoLYrovMMg==} + + '@atproto/syntax@0.4.2': + resolution: {integrity: sha512-X9XSRPinBy/0VQ677j8VXlBsYSsUXaiqxWVpGGxJYsAhugdQRb0jqaVKJFtm6RskeNkV6y9xclSUi9UYG/COrA==} + + '@atproto/xrpc@0.6.12': + resolution: {integrity: sha512-Ut3iISNLujlmY9Gu8sNU+SPDJDvqlVzWddU8qUr0Yae5oD4SguaUFjjhireMGhQ3M5E0KljQgDbTmnBo1kIZ3w==} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@braintree/sanitize-url@7.1.1': + resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + + '@capsizecss/unpack@3.0.1': + resolution: {integrity: sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==} + engines: {node: '>=18'} + + '@catppuccin/starlight@1.0.2': + resolution: {integrity: sha512-Qfy0l5EjGCoyRFlpsyDm9YFaxHCZXrMbLaEFPjzbFHMndKLv457nEyNlFnP7EkN1djnJgfORmmoaQ4ru2wiQEg==} + peerDependencies: + '@astrojs/starlight': '>=0.32' + astro: ^5.0.0 + + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + + '@clack/core@0.3.5': + resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} + + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + engines: {node: '>=14'} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.1': + resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@expressive-code/core@0.41.3': + resolution: {integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==} + + '@expressive-code/plugin-collapsible-sections@0.41.3': + resolution: {integrity: sha512-cuHIN7Ipl7gUcaWFfsgy6G3wn0Svk8dQ6WKXNQha63BURbm7CSBhD6y9qFGeIOrxaJtvH4Pj3Xb4C2Ni0OVwYA==} + + '@expressive-code/plugin-frames@0.41.3': + resolution: {integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==} + + '@expressive-code/plugin-line-numbers@0.41.3': + resolution: {integrity: sha512-eig82a4CRC3XgVPQ2S/TMDcLiHJokOCD/mAdNVImpD3segVewxfjGgtj5DXQRo0E0q6f0R0EH34YzTFl5CEPqg==} + + '@expressive-code/plugin-shiki@0.41.3': + resolution: {integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==} + + '@expressive-code/plugin-text-markers@0.41.3': + resolution: {integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==} + + '@fontsource-variable/fira-code@5.2.7': + resolution: {integrity: sha512-J2bxN7fz5rd8WpQYyau4o19WqTzxoTqaNj9jhsv4p21GSu1Rf34tbqsxqjyDCR+wDMHM3SajyFqtq+5uvRUQ7w==} + + '@fontsource-variable/outfit@5.2.8': + resolution: {integrity: sha512-4oUDCZx/Tcz6HZP423w/niqEH31Gks5IsqHV2ZZz1qKHaVIZdj2f0/S1IK2n8jl6Xo0o3N+3RjNHlV9R73ozQA==} + + '@fontsource-variable/rubik@5.2.8': + resolution: {integrity: sha512-vGDExLzB4a2Fj9mca5LqNoA2ZKcU9o+x5FEBLte/nxYkCB9hOQwZS6ZlItUv+Ssn7YMzKauGuI/Po+YueFuZbg==} + + '@fontsource/poppins@5.2.7': + resolution: {integrity: sha512-6uQyPmseo4FgI97WIhA4yWRlNaoLk4vSDK/PyRwdqqZb5zAEuc+Kunt8JTMcsHYUEGYBtN15SNkMajMdqUSUmg==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jop-software/astro-cookieconsent@3.0.1': + resolution: {integrity: sha512-UXo6aMR9/kEEmUIZoRTRJXDf/ADju9qQ0qNRWM1twdf0vRCh2s/ucHqaYOcs57Q2PcKmcq+Sc+0Tq0gSUgVDzA==} + peerDependencies: + vanilla-cookieconsent: ^3.0.0 + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + + '@lunariajs/core@0.1.1': + resolution: {integrity: sha512-sAqM9+DVsLe3xHM9wu2pEnKGYMs/bWS9qpR+CGHol3RihOELnOQTzHddXbdB1MtgesbI8dnQuG64Ocd8KkWsng==} + engines: {node: '>=18.17.0'} + hasBin: true + + '@lunariajs/starlight@0.1.1': + resolution: {integrity: sha512-tpkqv8TCGUvz0z5nVk1ACb/2bT3seqDx+CHimNQugcpAFSip9BqDPOiWqaCujzZFajfR/L4mUsPAnavnnE8KVw==} + engines: {node: '>=18.17.0'} + peerDependencies: + '@astrojs/starlight': '>=0.14.0' + astro: '>=4.0.0' + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mermaid-js/parser@0.6.3': + resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@pagefind/darwin-arm64@1.4.0': + resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.4.0': + resolution: {integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==} + cpu: [x64] + os: [darwin] + + '@pagefind/default-ui@1.4.0': + resolution: {integrity: sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ==} + + '@pagefind/freebsd-x64@1.4.0': + resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==} + cpu: [x64] + os: [freebsd] + + '@pagefind/linux-arm64@1.4.0': + resolution: {integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.4.0': + resolution: {integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-x64@1.4.0': + resolution: {integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==} + cpu: [x64] + os: [win32] + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@3.19.0': + resolution: {integrity: sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==} + + '@shikijs/engine-javascript@3.19.0': + resolution: {integrity: sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==} + + '@shikijs/engine-oniguruma@3.19.0': + resolution: {integrity: sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==} + + '@shikijs/langs@3.19.0': + resolution: {integrity: sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==} + + '@shikijs/themes@3.19.0': + resolution: {integrity: sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==} + + '@shikijs/types@3.19.0': + resolution: {integrity: sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@solid-primitives/refs@1.1.2': + resolution: {integrity: sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/transition-group@1.1.2': + resolution: {integrity: sha512-gnHS0OmcdjeoHN9n7Khu8KNrOlRc8a2weETDt2YT6o1zeW/XtUC6Db3Q9pkMU/9cCKdEmN4b0a/41MKAHRhzWA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.3.2': + resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@types/braces@3.0.5': + resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/fontkit@2.0.8': + resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/micromatch@4.0.10': + resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==} + + '@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@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + + '@types/picomatch@3.0.2': + resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@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==} + + '@typescript-eslint/eslint-plugin@8.49.0': + resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.49.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.49.0': + resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.49.0': + resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.49.0': + resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.49.0': + resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.49.0': + resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.49.0': + resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.49.0': + resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.49.0': + resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.49.0': + resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vtbag/cam-shaft@1.0.6': + resolution: {integrity: sha512-Xy1bmJJLXuCqxmY2agwPfhGNv1XZViqh54H0VGK4mouGsItFsh8Mz/wWAP6mZwAOEuu9bEOJ1mJ+oNoaczZ1zw==} + + '@vtbag/element-crossing@1.1.0': + resolution: {integrity: sha512-1YL609KPwhHUKRrVNfoogQCVJPfFrE5DubOLcCJZLHVCjWZ2ZAPcaq1wR2OP6nXD0Ok9JLX41YsEtYBYzw6CxQ==} + + '@vtbag/inspection-chamber@1.0.22': + resolution: {integrity: sha512-M0iVmgUEjTmjX3/LEVxpNFjqZSdKN/y6otH4aD6x8c3HhJjlD9OwStJaYHS8EoiQtvmPWIdG79iXOCesXTGfaQ==} + + '@vtbag/turn-signal@1.3.1': + resolution: {integrity: sha512-6rWkG+ik3U+KQGI94yNOrOh5QedB9zmP/8H51X5WQwrJz8m2MAU5YwGRRcweO/dJ6wW/Bn7OsgC1vRURnwrvCg==} + + '@vtbag/utensil-drawer@1.2.14': + resolution: {integrity: sha512-M/mABCYeWi2768jEmCEtfBGTWFG0Dczaf8XTA91WUJTML8AzJc3/s6A2xlDM9xi+ZrYgxeaOLfJVGikA6u7GuA==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + 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==} + + asciinema-player@3.12.1: + resolution: {integrity: sha512-X4tIjZEIsD7Keeu1cJbrsZZCbPSO85w2OiDRGui68JHQPjthIG2jh68TARDrf2CP2l1Lko4mevnBdwwmJfD0iw==} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + astro-auto-import@0.4.5: + resolution: {integrity: sha512-KU1qFJ97Qks2aT+qSxjrOY6tcwzzLVhY/8w1eM8vwqpP+MDpHKAlbr8Otg9T8g/Mfl/FOdG3nO9lydv1zbtyQA==} + engines: {node: '>=16.0.0'} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + astro-embed@0.9.2: + resolution: {integrity: sha512-MUeNrfnNgcrV9E8WqEW9IYK8+Y3etDLyyi8Uf35rM5WJ53wkh511ye9oi15taJuqOaYRk2hQ9P5G2+/JS1Mjxg==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + astro-expressive-code@0.41.3: + resolution: {integrity: sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + + astro-mermaid@1.2.0: + resolution: {integrity: sha512-zELK0l0QUJaHBul9uijTr7SP+MN4LherN4sAC4xE7nx8I/TQoEtB36pnyEDMROZY3T3s4Eojw5CC/ezEBKi9RQ==} + peerDependencies: + '@mermaid-js/layout-elk': ^0.2.0 + astro: ^4.0.0 || ^5.0.0 + mermaid: ^10.0.0 || ^11.0.0 + peerDependenciesMeta: + '@mermaid-js/layout-elk': + optional: true + + astro-tooltips@0.6.2: + resolution: {integrity: sha512-I9uXbchctnRqbc0mnxKcBRfweMuql/U+619+MzNvq3kANc7xthOXj6cMNgAkTaXoHJLdFMKL3Fx6vB5cyiiRXg==} + + astro-vtbot@2.1.9: + resolution: {integrity: sha512-7YfeHtUwyajC1TLxpKwETLpO7oGGXWazVTkGjRpjXCKRxQDYfExeuUGzU7GNqN/gsOqUtL5EEjojVpjPPhjBqQ==} + + astro@5.16.4: + resolution: {integrity: sha512-rgXI/8/tnO3Y9tfAaUyg/8beKhlIMltbiC8Q6jCoAfEidOyaue4KYKzbe0gJIb6qEdEaG3Kf3BY3EOSLkbWOLg==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + + await-lock@2.2.2: + resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bcp-47@2.1.0: + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + 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==} + + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-selector-parser@1.4.1: + resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} + + css-selector-parser@3.2.0: + resolution: {integrity: sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==} + + 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.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + 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'} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.13: + resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + + 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.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + + 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'} + + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + + devalue@5.6.0: + resolution: {integrity: sha512-BaD1s81TFFqbD6Uknni42TrolvEWA1Ih5L+OiHWmi4OYMJVwAYPGtha61I9KxTf52OvVHozHyjPu8zljqdF3uA==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + 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'} + + dompurify@3.3.1: + resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + + 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'} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + 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'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + 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.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.39.1: + resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expressive-code@0.41.3: + resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-xml-parser@5.3.2: + resolution: {integrity: sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==} + hasBin: true + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + fontace@0.3.1: + resolution: {integrity: sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==} + + fontkit@2.0.4: + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + 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-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + h3@1.15.4: + resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + + 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-mdast@10.1.2: + resolution: {integrity: sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==} + + 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==} + + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + i18next@23.16.8: + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + 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@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iso-datestring-validator@2.2.2: + resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + katex@0.16.27: + resolution: {integrity: sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + 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'} + + langium@3.3.1: + resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} + engines: {node: '>=16.0.0'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + linkedom@0.18.12: + resolution: {integrity: sha512-jalJsOwIKuQJSeTvsgzPe9iJzyfVaEJiEXl+25EkKevsULHvMJzpNqwvj1jOESWdmgKDiXObyjOYwlUqG7wo1Q==} + engines: {node: '>=16'} + peerDependencies: + canvas: '>= 2' + peerDependenciesMeta: + canvas: + optional: true + + lite-youtube-embed@0.3.4: + resolution: {integrity: sha512-aXgxpwK7AIW58GEbRzA8EYaY4LWvF3FKak6B9OtSJmuNyLhX2ouD4cMTxz/yR5HFInhknaYd2jLWOTRTvT8oAw==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + + 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==} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + 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.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.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.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + 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.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + mermaid@11.12.2: + resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-directive@3.0.2: + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} + + 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.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + 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.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + 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-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.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + + 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==} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} + engines: {node: '>=18'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + pagefind@1.4.0: + resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} + hasBin: true + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + 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-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + 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.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-astro@0.14.1: + resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} + engines: {node: ^14.15.0 || >=16.0.0} + + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + engines: {node: '>=14'} + hasBin: true + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.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.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + rehype-expressive-code@0.41.3: + resolution: {integrity: sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==} + + rehype-format@5.0.1: + resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} + + rehype-minify-whitespace@6.0.2: + resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-remark@10.0.1: + resolution: {integrity: sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-directive@3.0.1: + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} + + 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.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + restructure@3.0.2: + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} + + 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==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + s.color@0.0.15: + resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-formatter@0.7.9: + resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} + + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + seroval-plugins@1.3.3: + resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.3.2: + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} + engines: {node: '>=10'} + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@3.19.0: + resolution: {integrity: sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==} + + simple-git@3.30.0: + resolution: {integrity: sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@8.0.2: + resolution: {integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==} + engines: {node: '>=14.0.0', npm: '>=6.0.0'} + hasBin: true + + smol-toml@1.5.2: + resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} + engines: {node: '>= 18'} + + solid-js@1.9.10: + resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==} + + solid-transition-group@0.2.3: + resolution: {integrity: sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==} + engines: {node: '>=18.0.0', pnpm: '>=8.6.0'} + peerDependencies: + solid-js: ^1.6.12 + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + starlight-contributor-list@0.3.1: + resolution: {integrity: sha512-8F3BcnqeCgvI/OcagJCBsp71/XU9/zDiuSmsgAkWrRTxql0H2bG9Z9VXvmwzB/569QVlAsOwK7StAxDxqG6Myw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + '@astrojs/starlight': '>=0.30' + + starlight-giscus@0.8.1: + resolution: {integrity: sha512-etgWym6KpHeNSkbggEhpGEPNaLIwypWdvE7BxNFHGUkjiq6EYSJhr5zoMGZ9QfnMdkcj8PqKrJTM88YdCSEiDQ==} + engines: {node: ^18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + '@astrojs/starlight': '>=0.35.0' + + starlight-github-alerts@0.1.1: + resolution: {integrity: sha512-HzVp24sO2VoqJ65H58rh/HRBBc/DGUE5tdQYi3kkckdRHLZJUIkBa7EMF3dyiFw1rTRAzSN5t8r9riijnNvIzA==} + engines: {node: '>=18.17.1'} + peerDependencies: + '@astrojs/starlight': '>=0.35.0' + + starlight-image-zoom@0.13.2: + resolution: {integrity: sha512-fDJrx+UZXhkbhEeXKoRogTKAYtrYVJPw6wmSUI3nHUTA0vuRM6EI//2Z8bzv3Ecvz0pHKD1vAxtS01mLyessBA==} + engines: {node: '>=18'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + + starlight-kbd@0.2.1: + resolution: {integrity: sha512-kFDWkB99GSk1korUrHezRxcjLhQ53axDyI9oZakEPB5ZNU3b+uwp2kVMhEg6B5yzekwFgf84UlNiWu9lYpfMoA==} + engines: {node: '>=18.17.1'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + + starlight-links-validator@0.19.2: + resolution: {integrity: sha512-IHeK3R78fsmv53VfRkGbXkwK1CQEUBHM9QPzBEyoAxjZ/ssi5gjV+F4oNNUppTR48iPp+lEY0MTAmvkX7yNnkw==} + engines: {node: '>=18.17.1'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + astro: '>=5.1.5' + + starlight-llms-txt@0.6.0: + resolution: {integrity: sha512-mKkRPlGZ+kKJlnclXkW3s+RSVF/10Ct2BsQ4dYDaK8j4h/L55WbZCds1PsqQiLYPrDp7wIN6gm7LYsrUlGaBjQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + '@astrojs/starlight': '>=0.31' + astro: ^5.1.6 + + starlight-scroll-to-top@0.4.0: + resolution: {integrity: sha512-lxsW5Sv+oKCI8CYZQ6Ue957cExiHMozK73LmmbsvpBKWryW+AKU4OXmX/1bTQNx+mVLZcpm2qTwKa1KX5VdEaQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + '@astrojs/starlight': '>=0.35' + + starlight-sidebar-topics@0.6.2: + resolution: {integrity: sha512-SNCTUZS/hcVor0ZcaXbaSVU37+V+qtvzNirkvnOg3Mqu/awuGpthkH5+uKpiZqWxLffp6TrOlsv5E5QsxrndNg==} + engines: {node: '>=18'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + suf-log@2.5.3: + resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-hyperlinks@4.3.0: + resolution: {integrity: sha512-i6sWEzuwadSlcr2mOnb0ktlIl+K5FVxsPXmoPfknDd2gyw4ZBIAZ5coc0NQzYqDdEYXMHy8NaY9rWwa1Q1myiQ==} + engines: {node: '>=20'} + + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + engines: {node: '>=16'} + hasBin: true + + terminal-link@5.0.0: + resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} + engines: {node: '>=20'} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + + tlds@1.261.0: + resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-trailing-lines@2.1.0: + resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} + + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typescript-eslint@8.49.0: + resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + uhyphen@0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + + uint8arrays@3.0.0: + resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} + + ultrahtml@1.6.0: + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + + ultramatter@0.0.4: + resolution: {integrity: sha512-1f/hO3mR+/Hgue4eInOF/Qm/wzDqwhYha4DxM0hre9YIUyso3fE2XtrAU6B4njLqTC8CM49EZaYgsVSa+dXHGw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + + unicode-segmenter@0.14.1: + resolution: {integrity: sha512-yHedxlEpUyD+u1UE8qAuCMXVdMLn7yUdlmd8WN7FGmO1ICnpE7LJfnmuXBB+T0zkie3qHsy8fSucqceI/MylOg==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unifont@0.6.0: + resolution: {integrity: sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==} + + 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-remove@4.0.0: + resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} + + unist-util-select@4.0.3: + resolution: {integrity: sha512-1074+K9VyR3NyUz3lgNtHKm7ln+jSZXtLJM4E22uVuoFn88a/Go2pX8dusrt/W+KWH1ncn8jcd8uCQuvXb/fXA==} + + 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.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + unstorage@1.17.3: + resolution: {integrity: sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==} + 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.0.3 || ^7.0.0 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1.0.1 + 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 + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + vanilla-cookieconsent@3.1.0: + resolution: {integrity: sha512-/McNRtm/3IXzb9dhqMIcbquoU45SzbN2VB+To4jxEPqMmp7uVniP6BhGLjU8MC7ZCDsNQVOp27fhQTM/ruIXAA==} + + 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@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.1: + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + yocto-spinner@0.2.3: + resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} + engines: {node: '>=18.19'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod-to-json-schema@3.25.0: + resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} + peerDependencies: + zod: ^3.25 || ^4 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@11ty/eleventy-fetch@4.0.1': + dependencies: + debug: 4.4.3 + flat-cache: 3.2.0 + node-fetch: 2.7.0 + p-queue: 6.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + + '@anthropic-ai/claude-code@1.0.128': + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + '@astro-community/astro-embed-baseline-status@0.2.1(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astro-community/astro-embed-utils': 0.1.5 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-bluesky@0.1.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@atproto/api': 0.13.35 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + ts-pattern: 5.9.0 + + '@astro-community/astro-embed-integration@0.8.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astro-community/astro-embed-bluesky': 0.1.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-link-preview': 0.2.3 + '@astro-community/astro-embed-twitter': 0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-vimeo': 0.3.11(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-youtube': 0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@types/unist': 2.0.11 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + astro-auto-import: 0.4.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + unist-util-select: 4.0.3 + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-link-preview@0.2.3': + dependencies: + '@astro-community/astro-embed-utils': 0.1.5 + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-twitter@0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astro-community/astro-embed-utils': 0.1.5 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-utils@0.1.5': + dependencies: + linkedom: 0.18.12 + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-vimeo@0.3.11(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astro-community/astro-embed-utils': 0.1.5 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + transitivePeerDependencies: + - canvas + + '@astro-community/astro-embed-youtube@0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + lite-youtube-embed: 0.3.4 + + '@astrojs/compiler@2.13.0': {} + + '@astrojs/internal-helpers@0.7.5': {} + + '@astrojs/markdown-remark@6.3.9': + dependencies: + '@astrojs/internal-helpers': 0.7.5 + '@astrojs/prism': 3.3.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.1 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + shiki: 3.19.0 + smol-toml: 1.5.2 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/mdx@4.3.12(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astrojs/markdown-remark': 6.3.9 + '@mdx-js/mdx': 3.1.1 + acorn: 8.15.0 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + es-module-lexer: 1.7.0 + estree-util-visit: 2.0.0 + hast-util-to-html: 9.0.5 + piccolore: 0.1.3 + rehype-raw: 7.0.0 + remark-gfm: 4.0.1 + remark-smartypants: 3.0.2 + source-map: 0.7.6 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@3.3.0': + dependencies: + prismjs: 1.30.0 + + '@astrojs/rss@4.0.14': + dependencies: + fast-xml-parser: 5.3.2 + piccolore: 0.1.3 + + '@astrojs/sitemap@3.6.0': + dependencies: + sitemap: 8.0.2 + stream-replace-string: 2.0.0 + zod: 3.25.76 + + '@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astrojs/markdown-remark': 6.3.9 + '@astrojs/mdx': 4.3.12(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/sitemap': 3.6.0 + '@pagefind/default-ui': 1.4.0 + '@types/hast': 3.0.4 + '@types/js-yaml': 4.0.9 + '@types/mdast': 4.0.4 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + astro-expressive-code: 0.41.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + bcp-47: 2.1.0 + hast-util-from-html: 2.0.3 + hast-util-select: 6.0.4 + hast-util-to-string: 3.0.1 + hastscript: 9.0.1 + i18next: 23.16.8 + js-yaml: 4.1.1 + klona: 2.0.6 + mdast-util-directive: 3.1.0 + mdast-util-to-markdown: 2.1.2 + mdast-util-to-string: 4.0.0 + pagefind: 1.4.0 + rehype: 13.0.2 + rehype-format: 5.0.1 + remark-directive: 3.0.1 + ultrahtml: 1.6.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/telemetry@3.3.0': + dependencies: + ci-info: 4.3.1 + debug: 4.4.3 + dlv: 1.1.3 + dset: 3.1.4 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + + '@atproto/api@0.13.35': + dependencies: + '@atproto/common-web': 0.4.6 + '@atproto/lexicon': 0.4.14 + '@atproto/syntax': 0.3.4 + '@atproto/xrpc': 0.6.12 + await-lock: 2.2.2 + multiformats: 9.9.0 + tlds: 1.261.0 + zod: 3.25.76 + + '@atproto/common-web@0.4.6': + dependencies: + '@atproto/lex-data': 0.0.2 + '@atproto/lex-json': 0.0.2 + zod: 3.25.76 + + '@atproto/lex-data@0.0.2': + dependencies: + '@atproto/syntax': 0.4.2 + multiformats: 9.9.0 + tslib: 2.8.1 + uint8arrays: 3.0.0 + unicode-segmenter: 0.14.1 + + '@atproto/lex-json@0.0.2': + dependencies: + '@atproto/lex-data': 0.0.2 + tslib: 2.8.1 + + '@atproto/lexicon@0.4.14': + dependencies: + '@atproto/common-web': 0.4.6 + '@atproto/syntax': 0.4.2 + iso-datestring-validator: 2.2.2 + multiformats: 9.9.0 + zod: 3.25.76 + + '@atproto/syntax@0.3.4': {} + + '@atproto/syntax@0.4.2': {} + + '@atproto/xrpc@0.6.12': + dependencies: + '@atproto/lexicon': 0.4.14 + zod: 3.25.76 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + + '@babel/runtime@7.28.4': {} + + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@braintree/sanitize-url@7.1.1': {} + + '@capsizecss/unpack@3.0.1': + dependencies: + fontkit: 2.0.4 + + '@catppuccin/starlight@1.0.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + + '@clack/core@0.3.5': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@ctrl/tinycolor@4.2.0': {} + + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.3': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.1': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@expressive-code/core@0.41.3': + dependencies: + '@ctrl/tinycolor': 4.2.0 + 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.6 + postcss-nested: 6.2.0(postcss@8.5.6) + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.2 + + '@expressive-code/plugin-collapsible-sections@0.41.3': + dependencies: + '@expressive-code/core': 0.41.3 + + '@expressive-code/plugin-frames@0.41.3': + dependencies: + '@expressive-code/core': 0.41.3 + + '@expressive-code/plugin-line-numbers@0.41.3': + dependencies: + '@expressive-code/core': 0.41.3 + + '@expressive-code/plugin-shiki@0.41.3': + dependencies: + '@expressive-code/core': 0.41.3 + shiki: 3.19.0 + + '@expressive-code/plugin-text-markers@0.41.3': + dependencies: + '@expressive-code/core': 0.41.3 + + '@fontsource-variable/fira-code@5.2.7': {} + + '@fontsource-variable/outfit@5.2.8': {} + + '@fontsource-variable/rubik@5.2.8': {} + + '@fontsource/poppins@5.2.7': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.0 + + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.7.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@jop-software/astro-cookieconsent@3.0.1(vanilla-cookieconsent@3.1.0)': + dependencies: + vanilla-cookieconsent: 3.1.0 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + + '@lunariajs/core@0.1.1': + dependencies: + '@clack/core': 0.3.5 + fast-glob: 3.3.3 + get-port: 7.1.0 + jiti: 1.21.7 + micromatch: 4.0.8 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + simple-git: 3.30.0 + ultramatter: 0.0.4 + zod: 3.25.76 + transitivePeerDependencies: + - supports-color + + '@lunariajs/starlight@0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@lunariajs/core': 0.1.1 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.15.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.15.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.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@0.6.3': + dependencies: + langium: 3.3.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@oslojs/encoding@1.1.0': {} + + '@pagefind/darwin-arm64@1.4.0': + optional: true + + '@pagefind/darwin-x64@1.4.0': + optional: true + + '@pagefind/default-ui@1.4.0': {} + + '@pagefind/freebsd-x64@1.4.0': + optional: true + + '@pagefind/linux-arm64@1.4.0': + optional: true + + '@pagefind/linux-x64@1.4.0': + optional: true + + '@pagefind/windows-x64@1.4.0': + optional: true + + '@popperjs/core@2.11.8': {} + + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.53.3 + + '@rollup/rollup-android-arm-eabi@4.53.3': + optional: true + + '@rollup/rollup-android-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-x64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.53.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.53.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.53.3': + optional: true + + '@shikijs/core@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + + '@shikijs/themes@3.19.0': + dependencies: + '@shikijs/types': 3.19.0 + + '@shikijs/types@3.19.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@solid-primitives/refs@1.1.2(solid-js@1.9.10)': + dependencies: + '@solid-primitives/utils': 6.3.2(solid-js@1.9.10) + solid-js: 1.9.10 + + '@solid-primitives/transition-group@1.1.2(solid-js@1.9.10)': + dependencies: + solid-js: 1.9.10 + + '@solid-primitives/utils@6.3.2(solid-js@1.9.10)': + dependencies: + solid-js: 1.9.10 + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@types/braces@3.0.5': {} + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/fontkit@2.0.8': + dependencies: + '@types/node': 24.10.1 + + '@types/geojson@7946.0.16': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/js-yaml@4.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/micromatch@4.0.10': + dependencies: + '@types/braces': 3.0.5 + + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@17.0.45': {} + + '@types/node@18.19.130': + dependencies: + undici-types: 5.26.5 + + '@types/node@24.10.1': + dependencies: + undici-types: 7.16.0 + + '@types/picomatch@3.0.2': {} + + '@types/sax@1.2.7': + dependencies: + '@types/node': 17.0.45 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 + eslint: 9.39.1(jiti@1.21.7) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.49.0': + dependencies: + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 + + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.1(jiti@1.21.7) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.49.0': {} + + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.49.0': + dependencies: + '@typescript-eslint/types': 8.49.0 + eslint-visitor-keys: 4.2.1 + + '@ungap/structured-clone@1.3.0': {} + + '@vtbag/cam-shaft@1.0.6': {} + + '@vtbag/element-crossing@1.1.0': {} + + '@vtbag/inspection-chamber@1.0.22': {} + + '@vtbag/turn-signal@1.3.1': {} + + '@vtbag/utensil-drawer@1.2.14': {} + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-escapes@7.2.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + asciinema-player@3.12.1: + dependencies: + '@babel/runtime': 7.28.4 + solid-js: 1.9.10 + solid-transition-group: 0.2.3(solid-js@1.9.10) + + astring@1.9.0: {} + + astro-auto-import@0.4.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + dependencies: + '@types/node': 18.19.130 + acorn: 8.15.0 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + + astro-embed@0.9.2(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + dependencies: + '@astro-community/astro-embed-baseline-status': 0.2.1(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-bluesky': 0.1.5(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-integration': 0.8.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-link-preview': 0.2.3 + '@astro-community/astro-embed-twitter': 0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-vimeo': 0.3.11(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astro-community/astro-embed-youtube': 0.5.9(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + transitivePeerDependencies: + - canvas + + astro-expressive-code@0.41.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + dependencies: + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + rehype-expressive-code: 0.41.3 + + astro-mermaid@1.2.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))(mermaid@11.12.2): + dependencies: + '@anthropic-ai/claude-code': 1.0.128 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + import-meta-resolve: 4.2.0 + mdast-util-to-string: 4.0.0 + mermaid: 11.12.2 + unist-util-visit: 5.0.0 + + astro-tooltips@0.6.2: + dependencies: + tippy.js: 6.3.7 + + astro-vtbot@2.1.9: + dependencies: + '@vtbag/cam-shaft': 1.0.6 + '@vtbag/element-crossing': 1.1.0 + '@vtbag/inspection-chamber': 1.0.22 + '@vtbag/turn-signal': 1.3.1 + '@vtbag/utensil-drawer': 1.2.14 + + astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3): + dependencies: + '@astrojs/compiler': 2.13.0 + '@astrojs/internal-helpers': 0.7.5 + '@astrojs/markdown-remark': 6.3.9 + '@astrojs/telemetry': 3.3.0 + '@capsizecss/unpack': 3.0.1 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.3.1 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 1.1.1 + cssesc: 3.0.0 + debug: 4.4.3 + deterministic-object-hash: 2.0.2 + devalue: 5.6.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 1.7.0 + esbuild: 0.25.12 + estree-walker: 3.0.3 + flattie: 1.1.1 + fontace: 0.3.1 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.1 + mrmime: 2.0.1 + neotraverse: 0.6.18 + p-limit: 6.2.0 + p-queue: 8.1.1 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 + picomatch: 4.0.3 + prompts: 2.4.2 + rehype: 13.0.2 + semver: 7.7.3 + shiki: 3.19.0 + smol-toml: 1.5.2 + svgo: 4.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.3) + ultrahtml: 1.6.0 + unifont: 0.6.0 + unist-util-visit: 5.0.0 + unstorage: 1.17.3 + vfile: 6.0.3 + vite: 6.4.1(@types/node@24.10.1)(jiti@1.21.7) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@1.21.7)) + xxhash-wasm: 1.1.0 + yargs-parser: 21.1.1 + yocto-spinner: 0.2.3 + zod: 3.25.76 + zod-to-json-schema: 3.25.0(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) + optionalDependencies: + sharp: 0.34.5 + 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' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - yaml + + await-lock@2.2.2: {} + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base-64@1.0.0: {} + + base64-js@1.5.1: {} + + bcp-47-match@2.0.3: {} + + bcp-47@2.1.0: + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + + boolbase@1.0.0: {} + + boxen@8.0.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 8.0.0 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.2 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + + callsites@3.1.0: {} + + camelcase@8.0.0: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + ci-info@4.3.1: {} + + cli-boxes@3.0.0: {} + + clone@2.1.2: {} + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + common-ancestor-path@1.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + cookie-es@1.2.2: {} + + cookie@1.1.1: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@1.4.1: {} + + css-selector-parser@3.2.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cssom@0.5.0: {} + + csstype@3.2.3: {} + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.13: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + data-uri-to-buffer@4.0.1: {} + + dayjs@1.11.19: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + defu@6.1.4: {} + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + + dequal@2.0.3: {} + + destr@2.0.5: {} + + detect-libc@2.1.2: {} + + deterministic-object-hash@2.0.2: + dependencies: + base-64: 1.0.0 + + devalue@5.6.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dfa@1.2.0: {} + + diff@5.2.0: {} + + direction@2.0.1: {} + + dlv@1.1.3: {} + + 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 + + dompurify@3.3.1: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dset@3.1.4: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + environment@1.1.0: {} + + es-module-lexer@1.7.0: {} + + 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.15.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.1(jiti@1.21.7): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + 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@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + expressive-code@0.41.3: + dependencies: + '@expressive-code/core': 0.41.3 + '@expressive-code/plugin-frames': 0.41.3 + '@expressive-code/plugin-shiki': 0.41.3 + '@expressive-code/plugin-text-markers': 0.41.3 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-xml-parser@5.3.2: + dependencies: + strnum: 2.1.1 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + flattie@1.1.1: {} + + fontace@0.3.1: + dependencies: + '@types/fontkit': 2.0.8 + fontkit: 2.0.4 + + fontkit@2.0.4: + dependencies: + '@swc/helpers': 0.5.17 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.2 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + get-east-asian-width@1.4.0: {} + + get-port@7.1.0: {} + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@14.0.0: {} + + h3@1.15.4: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.4 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + + hachure-fill@0.5.2: {} + + has-flag@4.0.0: {} + + has-flag@5.0.1: {} + + hast-util-embedded@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-is-element: 3.0.0 + + hast-util-format@1.1.0: + dependencies: + '@types/hast': 3.0.4 + 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.4 + 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.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.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.4 + + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-minify-whitespace@1.0.1: + dependencies: + '@types/hast': 3.0.4 + 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.4 + + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.4 + 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.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.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.0.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.4 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.2.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.1.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.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.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.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-mdast@10.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-phrasing: 3.0.1 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hast-util-whitespace: 3.0.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-hast: 13.2.1 + mdast-util-to-string: 4.0.0 + rehype-minify-whitespace: 6.0.2 + trim-trailing-lines: 2.1.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.1.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.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@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.4 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.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: {} + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + + http-cache-semantics@4.2.0: {} + + i18next@23.16.8: + dependencies: + '@babel/runtime': 7.28.4 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + inline-style-parser@0.2.7: {} + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + iron-webcrypto@1.2.1: {} + + is-absolute-url@4.0.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@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + iso-datestring-validator@2.2.2: {} + + jiti@1.21.7: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + katex@0.16.27: + dependencies: + commander: 8.3.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + khroma@2.1.0: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + klona@2.0.6: {} + + langium@3.3.1: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + linkedom@0.18.12: + dependencies: + css-select: 5.2.2 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 10.0.0 + uhyphen: 0.2.0 + + lite-youtube-embed@0.3.4: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.merge@4.6.2: {} + + longest-streak@3.1.0: {} + + lru-cache@10.4.3: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.1: + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + source-map-js: 1.2.1 + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + marked@16.4.2: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + 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.2: + 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.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + 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.2 + 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.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + 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.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + 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.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + 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.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + 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-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.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.12.2: {} + + merge2@1.4.1: {} + + mermaid@11.12.2: + dependencies: + '@braintree/sanitize-url': 7.1.1 + '@iconify/utils': 3.1.0 + '@mermaid-js/parser': 0.6.3 + '@types/d3': 7.4.3 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.13 + dayjs: 1.11.19 + dompurify: 3.3.1 + katex: 0.16.27 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-directive@3.0.2: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 + + micromark-extension-directive@4.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + 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.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + 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.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + 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.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + 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.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + 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.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + 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.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + 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.2 + + 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.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + multiformats@9.9.0: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + neotraverse@0.6.18: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-domexception@1.0.0: {} + + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-mock-http@1.0.4: {} + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 + + ohash@2.0.11: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-finally@1.0.0: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@6.2.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-queue@8.1.1: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.4 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-timeout@6.1.4: {} + + package-manager-detector@1.6.0: {} + + pagefind@1.4.0: + optionalDependencies: + '@pagefind/darwin-arm64': 1.4.0 + '@pagefind/darwin-x64': 1.4.0 + '@pagefind/freebsd-x64': 1.4.0 + '@pagefind/linux-arm64': 1.4.0 + '@pagefind/linux-x64': 1.4.0 + '@pagefind/windows-x64': 1.4.0 + + pako@0.2.9: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + 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.2.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-data-parser@0.1.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-to-regexp@6.3.0: {} + + pathe@2.0.3: {} + + piccolore@0.1.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-plugin-astro@0.14.1: + dependencies: + '@astrojs/compiler': 2.13.0 + prettier: 3.7.4 + sass-formatter: 0.7.9 + + prettier@3.7.4: {} + + prismjs@1.30.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + property-information@7.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + radix3@1.1.2: {} + + readdirp@4.1.2: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.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.8 + 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.8 + 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.0.1: + dependencies: + regex-utilities: 2.3.0 + + rehype-expressive-code@0.41.3: + dependencies: + expressive-code: 0.41.3 + + rehype-format@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-format: 1.1.0 + + rehype-minify-whitespace@6.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-minify-whitespace: 1.0.1 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-remark@10.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + hast-util-to-mdast: 10.1.2 + unified: 11.0.5 + vfile: 6.0.3 + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-directive@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 3.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-directive@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + 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.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + resolve-from@4.0.0: {} + + restructure@3.0.2: {} + + 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.0.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 + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + robust-predicates@3.0.2: {} + + rollup@4.53.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 + fsevents: 2.3.3 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rw@1.3.3: {} + + s.color@0.0.15: {} + + safer-buffer@2.1.2: {} + + sass-formatter@0.7.9: + dependencies: + suf-log: 2.5.3 + + sax@1.4.3: {} + + semver@7.7.3: {} + + seroval-plugins@1.3.3(seroval@1.3.2): + dependencies: + seroval: 1.3.2 + + seroval@1.3.2: {} + + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@3.19.0: + dependencies: + '@shikijs/core': 3.19.0 + '@shikijs/engine-javascript': 3.19.0 + '@shikijs/engine-oniguruma': 3.19.0 + '@shikijs/langs': 3.19.0 + '@shikijs/themes': 3.19.0 + '@shikijs/types': 3.19.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + simple-git@3.30.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + sisteransi@1.0.5: {} + + sitemap@8.0.2: + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.4.3 + + smol-toml@1.5.2: {} + + solid-js@1.9.10: + dependencies: + csstype: 3.2.3 + seroval: 1.3.2 + seroval-plugins: 1.3.3(seroval@1.3.2) + + solid-transition-group@0.2.3(solid-js@1.9.10): + dependencies: + '@solid-primitives/refs': 1.1.2(solid-js@1.9.10) + '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.10) + solid-js: 1.9.10 + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + starlight-contributor-list@0.3.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@11ty/eleventy-fetch': 4.0.1 + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + transitivePeerDependencies: + - encoding + - supports-color + + starlight-giscus@0.8.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + + starlight-github-alerts@0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + unist-util-visit: 5.0.0 + + starlight-image-zoom@0.13.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + mdast-util-mdx-jsx: 3.2.0 + rehype-raw: 7.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + + starlight-kbd@0.2.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + + starlight-links-validator@0.19.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@types/picomatch': 3.0.2 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-has-property: 3.0.0 + is-absolute-url: 4.0.1 + kleur: 4.1.5 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-string: 4.0.0 + picomatch: 4.0.3 + terminal-link: 5.0.0 + unist-util-visit: 5.0.0 + transitivePeerDependencies: + - supports-color + + starlight-llms-txt@0.6.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + dependencies: + '@astrojs/mdx': 4.3.12(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@types/hast': 3.0.4 + '@types/micromatch': 4.0.10 + astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) + github-slugger: 2.0.0 + hast-util-select: 6.0.4 + micromatch: 4.0.8 + rehype-parse: 9.0.1 + rehype-remark: 10.0.1 + remark-gfm: 4.0.1 + remark-stringify: 11.0.0 + unified: 11.0.5 + unist-util-remove: 4.0.0 + transitivePeerDependencies: + - supports-color + + starlight-scroll-to-top@0.4.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + + starlight-sidebar-topics@0.6.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + picomatch: 4.0.3 + + stream-replace-string@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + strnum@2.1.1: {} + + 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 + + stylis@4.3.6: {} + + suf-log@2.5.3: + dependencies: + s.color: 0.0.15 + + supports-color@10.2.2: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@4.3.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + + svgo@4.0.0: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.4.3 + + terminal-link@5.0.0: + dependencies: + ansi-escapes: 7.2.0 + supports-hyperlinks: 4.3.0 + + tiny-inflate@1.0.3: {} + + tinyexec@1.0.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tippy.js@6.3.7: + dependencies: + '@popperjs/core': 2.11.8 + + tlds@1.261.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + trim-trailing-lines@2.1.0: {} + + trough@2.2.0: {} + + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + ts-dedent@2.2.0: {} + + ts-pattern@5.9.0: {} + + tsconfck@3.1.6(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.41.0: {} + + typescript-eslint@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + ufo@1.6.1: {} + + uhyphen@0.2.0: {} + + uint8arrays@3.0.0: + dependencies: + multiformats: 9.9.0 + + ultrahtml@1.6.0: {} + + ultramatter@0.0.4: {} + + uncrypto@0.1.3: {} + + undici-types@5.26.5: {} + + undici-types@7.16.0: {} + + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + + unicode-segmenter@0.14.1: {} + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.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@0.6.0: + dependencies: + css-tree: 3.1.0 + ofetch: 1.5.1 + ohash: 2.0.11 + + 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.0.0 + + unist-util-remove@4.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unist-util-select@4.0.3: + dependencies: + '@types/unist': 2.0.11 + css-selector-parser: 1.4.1 + nth-check: 2.1.1 + zwitch: 2.0.4 + + 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.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unstorage@1.17.3: + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.4 + lru-cache: 10.4.3 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + uuid@11.1.0: {} + + vanilla-cookieconsent@3.1.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@6.4.1(@types/node@24.10.1)(jiti@1.21.7): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.1 + fsevents: 2.3.3 + jiti: 1.21.7 + + vitefu@1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@1.21.7)): + optionalDependencies: + vite: 6.4.1(@types/node@24.10.1)(jiti@1.21.7) + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.0.8: {} + + web-namespaces@2.0.1: {} + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-pm-runs@1.1.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + word-wrap@1.2.5: {} + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + + wrappy@1.0.2: {} + + xxhash-wasm@1.1.0: {} + + yargs-parser@21.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.2: {} + + yocto-spinner@0.2.3: + dependencies: + yoctocolors: 2.1.2 + + yoctocolors@2.1.2: {} + + zod-to-json-schema@3.25.0(zod@3.25.76): + dependencies: + zod: 3.25.76 + + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): + dependencies: + typescript: 5.9.3 + zod: 3.25.76 + + zod@3.25.76: {} + + zwitch@2.0.4: {} diff --git a/src/frontend/src/content/docs/community/contributor-guide.mdx b/src/frontend/src/content/docs/community/contributor-guide.mdx index a36fecf2..8fbf85da 100644 --- a/src/frontend/src/content/docs/community/contributor-guide.mdx +++ b/src/frontend/src/content/docs/community/contributor-guide.mdx @@ -19,6 +19,7 @@ This documentation site is built using [Starlight](https://starlight.astro.build Before you begin, ensure you have the following installed: - [Node.js](https://nodejs.org/en/download) (LTS version recommended) - For running the development server +- [pnpm](https://pnpm.io/installation) - Fast, disk space efficient package manager - [Visual Studio Code](https://code.visualstudio.com/) - Recommended code editor - [Git](https://git-scm.com/downloads) - For version control @@ -41,13 +42,13 @@ Before you begin, ensure you have the following installed: 1. Install dependencies ```bash - npm install + pnpm install ``` 1. Run the development server ```bash - npm run dev + pnpm run dev ``` This starts the Vite development server for the front end and provide hot-reload capabilities. @@ -65,17 +66,17 @@ Before committing your changes, ensure your code follows the project's style gui - **Lint your code** - Check for code quality issues: ```bash - npm run lint + pnpm run lint ``` - **Format your code** - Auto-format your code to match the project's style: ```bash - npm run format + pnpm run format ``` ## ➡️ Git workflow @@ -97,8 +98,8 @@ Before committing your changes, ensure your code follows the project's style gui 1. Run lint and format commands to ensure code quality ```bash - npm run lint - npm run format + pnpm run lint + pnpm run format ``` 1. Commit with descriptive messages From fa57ee19e96f678b933e39cbd106525ec9b3a95f Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 13:35:39 -0600 Subject: [PATCH 06/15] fix: Update commands in devcontainer and package.json for consistency; adjust contributor guide for simplified usage --- .devcontainer/devcontainer.json | 2 +- package.json | 12 +++++----- src/apphost/Aspire.Dev.AppHost/AppHost.cs | 1 + src/frontend/package.json | 22 +++++++++---------- .../docs/community/contributor-guide.mdx | 12 +++++----- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9b4f78d6..2b87f754 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,6 +18,6 @@ "onAutoForward": "openBrowser" } }, - "postCreateCommand": "npm install -g pnpm && pnpm install && echo '\n✨ Ready to go! Run \"pnpm run dev\" to start the dev server.\n'", + "postCreateCommand": "npm install -g pnpm && pnpm install && echo '\n✨ Ready to go! Run \"pnpm dev\" to start the dev server.\n'", "remoteUser": "node" } diff --git a/package.json b/package.json index bf248c00..286b910b 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,11 @@ "description": "Root-level package.json delegating to src/frontend.", "scripts": { "install": "cd src/frontend && pnpm i", - "dev": "cd src/frontend && pnpm run dev", - "build": "cd src/frontend && pnpm run build", - "preview": "cd src/frontend && pnpm run preview", - "lint": "cd src/frontend && pnpm run lint", - "format": "cd src/frontend && pnpm run format", - "update:all": "cd src/frontend && pnpm run update:all" + "dev": "cd src/frontend && pnpm dev", + "build": "cd src/frontend && pnpm build", + "preview": "cd src/frontend && pnpm preview", + "lint": "cd src/frontend && pnpm lint", + "format": "cd src/frontend && pnpm format", + "update:all": "cd src/frontend && pnpm update:all" } } \ No newline at end of file diff --git a/src/apphost/Aspire.Dev.AppHost/AppHost.cs b/src/apphost/Aspire.Dev.AppHost/AppHost.cs index dce63fe0..bc378be0 100644 --- a/src/apphost/Aspire.Dev.AppHost/AppHost.cs +++ b/src/apphost/Aspire.Dev.AppHost/AppHost.cs @@ -7,6 +7,7 @@ { // For local development: Use ViteApp for hot reload and development experience builder.AddViteApp("frontend", "../../frontend") + .WithPnpm() .WithUrlForEndpoint("http", static url => url.DisplayText = "aspire.dev (Local)") .WithExternalHttpEndpoints(); } diff --git a/src/frontend/package.json b/src/frontend/package.json index 85f15ee8..ccfe9c35 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -15,19 +15,19 @@ "scripts": { "git-env": "node ./scripts/write-git-env.mjs", "check-data": "node ./scripts/check-data-files.mjs", - "dev": "pnpm run git-env && pnpm run check-data && astro dev", - "dev:host": "pnpm run git-env && pnpm run check-data && astro dev --host", - "start": "pnpm run git-env && pnpm run check-data && astro dev", - "start:host": "pnpm run git-env && pnpm run check-data && astro dev --host", - "build": "pnpm run git-env && pnpm run update:all && astro build", - "build:production": "pnpm run git-env && pnpm run update:all && astro build --mode production", - "preview": "pnpm run git-env && astro preview", - "preview:host": "pnpm run git-env && astro preview --host", - "astro": "pnpm run git-env && astro", + "dev": "pnpm git-env && pnpm check-data && astro dev", + "dev:host": "pnpm git-env && pnpm check-data && astro dev --host", + "start": "pnpm git-env && pnpm check-data && astro dev", + "start:host": "pnpm git-env && pnpm check-data && astro dev --host", + "build": "pnpm git-env && pnpm update:all && astro build", + "build:production": "pnpm git-env && pnpm update:all && astro build --mode production", + "preview": "pnpm git-env && astro preview", + "preview:host": "pnpm git-env && astro preview --host", + "astro": "pnpm git-env && astro", "lint": "eslint . --max-warnings 0", "format": "prettier -w --cache --plugin prettier-plugin-astro .", - "linkcheck": "pnpm run git-env && pnpm run update:all && cross-env CHECK_LINKS=true astro build", - "update:all": "pnpm run update:integrations && pnpm run update:github-stats", + "linkcheck": "pnpm git-env && pnpm update:all && cross-env CHECK_LINKS=true astro build", + "update:all": "pnpm update:integrations && pnpm update:github-stats", "update:integrations": "node ./scripts/update-integrations.js", "update:github-stats": "node ./scripts/update-github-stats.js", "update:posts": "node ./scripts/update-posts.js" diff --git a/src/frontend/src/content/docs/community/contributor-guide.mdx b/src/frontend/src/content/docs/community/contributor-guide.mdx index 8fbf85da..16adbf4b 100644 --- a/src/frontend/src/content/docs/community/contributor-guide.mdx +++ b/src/frontend/src/content/docs/community/contributor-guide.mdx @@ -48,7 +48,7 @@ Before you begin, ensure you have the following installed: 1. Run the development server ```bash - pnpm run dev + pnpm dev ``` This starts the Vite development server for the front end and provide hot-reload capabilities. @@ -66,17 +66,17 @@ Before committing your changes, ensure your code follows the project's style gui - **Lint your code** - Check for code quality issues: ```bash - pnpm run lint + pnpm lint ``` - **Format your code** - Auto-format your code to match the project's style: ```bash - pnpm run format + pnpm format ``` ## ➡️ Git workflow @@ -98,8 +98,8 @@ Before committing your changes, ensure your code follows the project's style gui 1. Run lint and format commands to ensure code quality ```bash - pnpm run lint - pnpm run format + pnpm lint + pnpm format ``` 1. Commit with descriptive messages From 6dedd481a57b6f4b5ebfe359e03a85cadd1af830 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 13:49:18 -0600 Subject: [PATCH 07/15] fix: Update starlight dependencies and enhance component configurations for improved functionality --- src/frontend/astro.config.mjs | 6 +- src/frontend/package.json | 10 ++- src/frontend/pnpm-lock.yaml | 148 +++++++++++++++++++++++----------- 3 files changed, 111 insertions(+), 53 deletions(-) diff --git a/src/frontend/astro.config.mjs b/src/frontend/astro.config.mjs index 7af4dcd2..a3825938 100644 --- a/src/frontend/astro.config.mjs +++ b/src/frontend/astro.config.mjs @@ -119,9 +119,9 @@ export default defineConfig({ }), starlightKbd({ types: [ - { id: 'mac', label: 'macOS' }, - { id: 'windows', label: 'Windows', default: true }, - { id: 'linux', label: 'Linux' }, + { id: 'mac', label: 'macOS', detector: 'apple' }, + { id: 'windows', label: 'Windows', detector: 'windows', default: true }, + { id: 'linux', label: 'Linux', detector: 'linux' }, ], }), starlightGiscus({ diff --git a/src/frontend/package.json b/src/frontend/package.json index ccfe9c35..7f83a643 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -37,7 +37,7 @@ "@astro-community/astro-embed-vimeo": "^0.3.11", "@astro-community/astro-embed-youtube": "^0.5.9", "@astrojs/rss": "^4.0.14", - "@astrojs/starlight": "^0.36.2", + "@astrojs/starlight": "^0.37.0", "@catppuccin/starlight": "^1.0.2", "@expressive-code/plugin-collapsible-sections": "^0.41.3", "@expressive-code/plugin-line-numbers": "^0.41.3", @@ -46,6 +46,7 @@ "@fontsource-variable/rubik": "^5.2.8", "@fontsource/poppins": "^5.2.7", "@jop-software/astro-cookieconsent": "^3.0.1", + "@lunariajs/core": "^0.1.1", "@lunariajs/starlight": "^0.1.1", "asciinema-player": "^3.12.1", "astro": "^5.16.0", @@ -58,7 +59,7 @@ "starlight-giscus": "^0.8.1", "starlight-github-alerts": "^0.1.1", "starlight-image-zoom": "^0.13.2", - "starlight-kbd": "^0.2.1", + "starlight-kbd": "^0.3.0", "starlight-links-validator": "^0.19.1", "starlight-llms-txt": "^0.6.0", "starlight-scroll-to-top": "^0.4.0", @@ -66,13 +67,14 @@ "vanilla-cookieconsent": "^3.1.0" }, "devDependencies": { + "@eslint/js": "^9.39.1", "astro-embed": "^0.9.1", "astro-vtbot": "^2.1.9", "cross-env": "^10.1.0", - "node-fetch": "^3.3.2", - "@eslint/js": "^9.39.1", "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.8", + "globals": "^16.5.0", + "node-fetch": "^3.3.2", "prettier": "^3.7.4", "prettier-plugin-astro": "^0.14.1", "typescript-eslint": "^8.48.1" diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml index 47d38161..c31a5a3b 100644 --- a/src/frontend/pnpm-lock.yaml +++ b/src/frontend/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@anthropic-ai/claude-code@<2.0.31': '>=2.0.31' + importers: .: @@ -21,11 +24,11 @@ importers: specifier: ^4.0.14 version: 4.0.14 '@astrojs/starlight': - specifier: ^0.36.2 - version: 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + specifier: ^0.37.0 + version: 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) '@catppuccin/starlight': specifier: ^1.0.2 - version: 1.0.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + version: 1.0.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) '@expressive-code/plugin-collapsible-sections': specifier: ^0.41.3 version: 0.41.3 @@ -47,9 +50,12 @@ importers: '@jop-software/astro-cookieconsent': specifier: ^3.0.1 version: 3.0.1(vanilla-cookieconsent@3.1.0) + '@lunariajs/core': + specifier: ^0.1.1 + version: 0.1.1 '@lunariajs/starlight': specifier: ^0.1.1 - version: 0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + version: 0.1.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) asciinema-player: specifier: ^3.12.1 version: 3.12.1 @@ -73,31 +79,31 @@ importers: version: 0.34.5 starlight-contributor-list: specifier: ^0.3.1 - version: 0.3.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.3.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-giscus: specifier: ^0.8.1 - version: 0.8.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.8.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-github-alerts: specifier: ^0.1.1 - version: 0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.1.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-image-zoom: specifier: ^0.13.2 - version: 0.13.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.13.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-kbd: - specifier: ^0.2.1 - version: 0.2.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + specifier: ^0.3.0 + version: 0.3.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-links-validator: specifier: ^0.19.1 - version: 0.19.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + version: 0.19.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) starlight-llms-txt: specifier: ^0.6.0 - version: 0.6.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + version: 0.6.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) starlight-scroll-to-top: specifier: ^0.4.0 - version: 0.4.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.4.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) starlight-sidebar-topics: specifier: ^0.6.2 - version: 0.6.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) + version: 0.6.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))) vanilla-cookieconsent: specifier: ^3.1.0 version: 3.1.0 @@ -120,6 +126,9 @@ importers: eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.1(jiti@1.21.7)) + globals: + specifier: ^16.5.0 + version: 16.5.0 node-fetch: specifier: ^3.3.2 version: 3.3.2 @@ -142,8 +151,8 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@anthropic-ai/claude-code@1.0.128': - resolution: {integrity: sha512-uUg5cFMJfeQetQzFw76Vpbro6DAXst2Lpu8aoZWRFSoQVYu5ZSAnbBoxaWmW/IgnHSqIIvtMwzCoqmcA9j9rNQ==} + '@anthropic-ai/claude-code@2.0.61': + resolution: {integrity: sha512-3Hkb1J6J52uykcH/UnnmkYFkBbvVET0HvF6K3A4J2aZWdzLo9agJber9AM5yePpompjmwDacgBMCn/SoJYsnNQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -208,8 +217,8 @@ packages: '@astrojs/sitemap@3.6.0': resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} - '@astrojs/starlight@0.36.3': - resolution: {integrity: sha512-5cm4QVQHUP6ZE52O43TtUpsTvLKdZa9XEs4l3suzuY7Ymsbz4ojtoL9NhistbMqM+/qk6fm6SmxbOL6hQ/LfNA==} + '@astrojs/starlight@0.37.0': + resolution: {integrity: sha512-1AlaEjYYRO+5o6P5maPUBQZr6Q3wtuhMQTmsDQExI07wJVwe7EC2wGhXnFo+jpCjwHv/Bdg33PQheY4UhMj01g==} peerDependencies: astro: ^5.5.0 @@ -642,11 +651,21 @@ packages: cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] @@ -706,12 +725,24 @@ packages: cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1988,6 +2019,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} @@ -2920,8 +2955,8 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.32.0' - starlight-kbd@0.2.1: - resolution: {integrity: sha512-kFDWkB99GSk1korUrHezRxcjLhQ53axDyI9oZakEPB5ZNU3b+uwp2kVMhEg6B5yzekwFgf84UlNiWu9lYpfMoA==} + starlight-kbd@0.3.0: + resolution: {integrity: sha512-bhG1kWGEXCkuV8pkYW6sWEVmwD2bnpQpVIxq4QDJp7tLsprAbIKnD7RKFCP/QtITfwaVgKq3uMNK0+p4TUAgGg==} engines: {node: '>=18.17.1'} peerDependencies: '@astrojs/starlight': '>=0.32.0' @@ -3415,13 +3450,15 @@ snapshots: package-manager-detector: 1.6.0 tinyexec: 1.0.2 - '@anthropic-ai/claude-code@1.0.128': + '@anthropic-ai/claude-code@2.0.61': optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 '@img/sharp-linux-arm': 0.33.5 '@img/sharp-linux-arm64': 0.33.5 '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 '@img/sharp-win32-x64': 0.33.5 '@astro-community/astro-embed-baseline-status@0.2.1(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': @@ -3546,7 +3583,7 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + '@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': dependencies: '@astrojs/markdown-remark': 6.3.9 '@astrojs/mdx': 4.3.12(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) @@ -3565,6 +3602,7 @@ snapshots: i18next: 23.16.8 js-yaml: 4.1.1 klona: 2.0.6 + magic-string: 0.30.21 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 @@ -3659,9 +3697,9 @@ snapshots: dependencies: fontkit: 2.0.4 - '@catppuccin/starlight@1.0.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + '@catppuccin/starlight@1.0.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) '@chevrotain/cst-dts-gen@11.0.3': @@ -3940,9 +3978,15 @@ snapshots: '@img/sharp-libvips-linux-x64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true @@ -3991,11 +4035,21 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 @@ -4047,9 +4101,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@lunariajs/starlight@0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': + '@lunariajs/starlight@0.1.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))': dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) '@lunariajs/core': 0.1.1 astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) transitivePeerDependencies: @@ -4422,7 +4476,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 24.10.1 '@types/trusted-types@2.0.7': optional: true @@ -4612,7 +4666,7 @@ snapshots: astro-mermaid@1.2.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))(mermaid@11.12.2): dependencies: - '@anthropic-ai/claude-code': 1.0.128 + '@anthropic-ai/claude-code': 2.0.61 astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) import-meta-resolve: 4.2.0 mdast-util-to-string: 4.0.0 @@ -5454,6 +5508,8 @@ snapshots: globals@14.0.0: {} + globals@16.5.0: {} + h3@1.15.4: dependencies: cookie-es: 1.2.2 @@ -6921,26 +6977,26 @@ snapshots: space-separated-tokens@2.0.2: {} - starlight-contributor-list@0.3.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-contributor-list@0.3.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: '@11ty/eleventy-fetch': 4.0.1 - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) transitivePeerDependencies: - encoding - supports-color - starlight-giscus@0.8.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-giscus@0.8.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) - starlight-github-alerts@0.1.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-github-alerts@0.1.1(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) unist-util-visit: 5.0.0 - starlight-image-zoom@0.13.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-image-zoom@0.13.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) mdast-util-mdx-jsx: 3.2.0 rehype-raw: 7.0.0 unist-util-visit: 5.0.0 @@ -6948,13 +7004,13 @@ snapshots: transitivePeerDependencies: - supports-color - starlight-kbd@0.2.1(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-kbd@0.3.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) - starlight-links-validator@0.19.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + starlight-links-validator@0.19.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) '@types/picomatch': 3.0.2 astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) github-slugger: 2.0.0 @@ -6970,10 +7026,10 @@ snapshots: transitivePeerDependencies: - supports-color - starlight-llms-txt@0.6.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): + starlight-llms-txt@0.6.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)))(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)): dependencies: '@astrojs/mdx': 4.3.12(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) '@types/hast': 3.0.4 '@types/micromatch': 4.0.10 astro: 5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3) @@ -6989,13 +7045,13 @@ snapshots: transitivePeerDependencies: - supports-color - starlight-scroll-to-top@0.4.0(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-scroll-to-top@0.4.0(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) - starlight-sidebar-topics@0.6.2(@astrojs/starlight@0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): + starlight-sidebar-topics@0.6.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3))): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.53.3)(typescript@5.9.3)) picomatch: 4.0.3 stream-replace-string@2.0.0: {} From 63da3c25db8ea7624ce678e948349c06b6dbfc30 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:05:56 -0600 Subject: [PATCH 08/15] feat: Add pnpm workspace configuration for anthropic-ai/claude-code dependency management --- src/frontend/pnpm-workspace.yaml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/frontend/pnpm-workspace.yaml diff --git a/src/frontend/pnpm-workspace.yaml b/src/frontend/pnpm-workspace.yaml new file mode 100644 index 00000000..88da5787 --- /dev/null +++ b/src/frontend/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +overrides: + '@anthropic-ai/claude-code@<2.0.31': '>=2.0.31' From 9ab44bf9e4c439b62cb291ab69e5397dc9097d47 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:16:36 -0600 Subject: [PATCH 09/15] fix: Simplify dependency installation and commands in workflow files for consistency --- .github/workflows/dependency-updates.yml | 10 ++++------ .github/workflows/frontend-build.yml | 6 ++++-- .github/workflows/integration.yml | 6 ++++-- .github/workflows/lint-validate.yml | 12 ++++++++---- .github/workflows/security-scan.yml | 6 ++++-- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml index 2bff640d..15a8db5c 100644 --- a/.github/workflows/dependency-updates.yml +++ b/.github/workflows/dependency-updates.yml @@ -36,14 +36,12 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install dependencies - run: | - cd src/frontend - pnpm install --frozen-lockfile + working-directory: src/frontend + run: pnpm install --frozen-lockfile - name: Update integration data - run: | - cd src/frontend - pnpm run update:all + working-directory: src/frontend + run: pnpm update:all - name: Check for changes id: verify-changed-files diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 9814c8be..475368f5 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -32,12 +32,14 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - run: cd src/frontend && pnpm install --frozen-lockfile + working-directory: src/frontend + run: pnpm install --frozen-lockfile - name: Build frontend + working-directory: src/frontend env: MODE: production - run: cd src/frontend && npm run build:production + run: pnpm build:production - name: Check dist run: | diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 294f2a48..e2faa096 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -33,12 +33,14 @@ jobs: global-json-file: global.json - name: Install frontend deps - run: cd src/frontend && pnpm install --frozen-lockfile + working-directory: src/frontend + run: pnpm install --frozen-lockfile - name: Build frontend + working-directory: src/frontend env: MODE: production - run: cd src/frontend && pnpm run build:production + run: pnpm build:production - name: Build AppHost run: cd src/apphost/Aspire.Dev.AppHost && dotnet build --configuration Release diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index 60426621..b6f86183 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -29,16 +29,20 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - run: cd src/frontend && pnpm install --frozen-lockfile + working-directory: src/frontend + run: pnpm install --frozen-lockfile - name: Run ESLint - run: cd src/frontend && pnpm run lint + working-directory: src/frontend + run: pnpm lint - name: Astro type check - run: cd src/frontend && npx astro check | tee ../astro-check.txt + working-directory: src/frontend + run: npx astro check | tee ../astro-check.txt - name: Astro config dry run - run: cd src/frontend && npx astro build --dry-run | tee ../astro-dry-run.txt || echo "Dry run validation completed" + working-directory: src/frontend + run: npx astro build --dry-run | tee ../astro-dry-run.txt || echo "Dry run validation completed" - name: Upload lint/validate artifacts if: ${{ always() }} diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index 74c6d8d9..b3941c19 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -27,10 +27,12 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install frontend deps - run: cd src/frontend && pnpm install --frozen-lockfile + working-directory: src/frontend + run: pnpm install --frozen-lockfile - name: Run pnpm audit - run: cd src/frontend && pnpm audit --audit-level=moderate | tee ../pnpm-audit.txt + working-directory: src/frontend + run: pnpm audit --audit-level=moderate | tee ../pnpm-audit.txt continue-on-error: true - uses: actions/setup-dotnet@v4 From 0708b197afc42da9a68578d6828c02445c5a0311 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:20:14 -0600 Subject: [PATCH 10/15] fix: Standardize working directory across workflow files for consistency --- .github/workflows/dependency-updates.yml | 5 +++-- .github/workflows/frontend-build.yml | 5 +++-- .github/workflows/integration.yml | 5 +++-- .github/workflows/lint-validate.yml | 7 +++---- .github/workflows/security-scan.yml | 5 +++-- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml index 15a8db5c..48f9e9e0 100644 --- a/.github/workflows/dependency-updates.yml +++ b/.github/workflows/dependency-updates.yml @@ -17,6 +17,9 @@ jobs: update-integration-data: name: Update Integration Data runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend steps: - name: Checkout code @@ -36,11 +39,9 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install dependencies - working-directory: src/frontend run: pnpm install --frozen-lockfile - name: Update integration data - working-directory: src/frontend run: pnpm update:all - name: Check for changes diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 475368f5..a16d741f 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -16,6 +16,9 @@ jobs: build: name: Frontend Build runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend steps: - uses: actions/checkout@v4 with: @@ -32,11 +35,9 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - working-directory: src/frontend run: pnpm install --frozen-lockfile - name: Build frontend - working-directory: src/frontend env: MODE: production run: pnpm build:production diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index e2faa096..51045661 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -13,6 +13,9 @@ permissions: jobs: integration: runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend steps: - uses: actions/checkout@v4 with: @@ -33,11 +36,9 @@ jobs: global-json-file: global.json - name: Install frontend deps - working-directory: src/frontend run: pnpm install --frozen-lockfile - name: Build frontend - working-directory: src/frontend env: MODE: production run: pnpm build:production diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index b6f86183..654521ba 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -13,6 +13,9 @@ permissions: jobs: lint_validate: runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend steps: - uses: actions/checkout@v4 with: @@ -29,19 +32,15 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install deps - working-directory: src/frontend run: pnpm install --frozen-lockfile - name: Run ESLint - working-directory: src/frontend run: pnpm lint - name: Astro type check - working-directory: src/frontend run: npx astro check | tee ../astro-check.txt - name: Astro config dry run - working-directory: src/frontend run: npx astro build --dry-run | tee ../astro-dry-run.txt || echo "Dry run validation completed" - name: Upload lint/validate artifacts diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index b3941c19..2c20ba22 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -10,6 +10,9 @@ on: jobs: security: runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend permissions: contents: read security-events: write @@ -27,11 +30,9 @@ jobs: cache-dependency-path: src/frontend/pnpm-lock.yaml - name: Install frontend deps - working-directory: src/frontend run: pnpm install --frozen-lockfile - name: Run pnpm audit - working-directory: src/frontend run: pnpm audit --audit-level=moderate | tee ../pnpm-audit.txt continue-on-error: true From d634223f5f06ca358a394deba61b642bc7721945 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:33:24 -0600 Subject: [PATCH 11/15] fix: Update pnpm action version to 10 across workflow files for consistency --- .github/workflows/dependency-updates.yml | 2 +- .github/workflows/frontend-build.yml | 2 +- .github/workflows/integration.yml | 2 +- .github/workflows/lint-validate.yml | 2 +- .github/workflows/security-scan.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml index 48f9e9e0..19e15d91 100644 --- a/.github/workflows/dependency-updates.yml +++ b/.github/workflows/dependency-updates.yml @@ -29,7 +29,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 9 + version: 10 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index a16d741f..cb2f7c14 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -26,7 +26,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 9 + version: 10 - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 51045661..7fda81fb 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -23,7 +23,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 9 + version: 10 - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index 654521ba..68d52047 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -23,7 +23,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 9 + version: 10 - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index 2c20ba22..0728c5f1 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -21,7 +21,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 9 + version: 10 - uses: actions/setup-node@v4 with: From d2dff3dbd7e3a1852c35bbe9efe85eeca06fea9b Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:37:22 -0600 Subject: [PATCH 12/15] fix: Re-enable eslint rules for safer TypeScript assignments and calls --- src/frontend/src/content.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/frontend/src/content.config.ts b/src/frontend/src/content.config.ts index 55adeb07..a11b53c3 100644 --- a/src/frontend/src/content.config.ts +++ b/src/frontend/src/content.config.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access */ import { defineCollection, z } from 'astro:content'; import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; From fdf958dd70c8e055a93a957c527b4485e2e07327 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 14:42:42 -0600 Subject: [PATCH 13/15] fix: Update paths in workflow files for consistency and accuracy --- .github/workflows/frontend-build.yml | 4 ++-- .github/workflows/integration.yml | 5 +++-- .github/workflows/lint-validate.yml | 8 ++++---- .github/workflows/security-scan.yml | 9 +++++---- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index cb2f7c14..40206e38 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -44,11 +44,11 @@ jobs: - name: Check dist run: | - if [ ! -d "src/frontend/dist" ]; then + if [ ! -d "dist" ]; then echo "Frontend build failed - dist directory not found" exit 1 fi - ls -la src/frontend/dist + ls -la dist - name: Upload artifact if: ${{ always() }} diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 7fda81fb..619798e5 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -44,11 +44,12 @@ jobs: run: pnpm build:production - name: Build AppHost - run: cd src/apphost/Aspire.Dev.AppHost && dotnet build --configuration Release + working-directory: src/apphost/Aspire.Dev.AppHost + run: dotnet build --configuration Release - name: Validate frontend index run: | - if [ ! -f "src/frontend/dist/index.html" ]; then + if [ ! -f "dist/index.html" ]; then echo "Frontend build incomplete - index.html not found" exit 1 fi diff --git a/.github/workflows/lint-validate.yml b/.github/workflows/lint-validate.yml index 68d52047..4b1f0702 100644 --- a/.github/workflows/lint-validate.yml +++ b/.github/workflows/lint-validate.yml @@ -38,10 +38,10 @@ jobs: run: pnpm lint - name: Astro type check - run: npx astro check | tee ../astro-check.txt + run: npx astro check | tee astro-check.txt - name: Astro config dry run - run: npx astro build --dry-run | tee ../astro-dry-run.txt || echo "Dry run validation completed" + run: npx astro build --dry-run | tee astro-dry-run.txt || echo "Dry run validation completed" - name: Upload lint/validate artifacts if: ${{ always() }} @@ -49,7 +49,7 @@ jobs: with: name: lint-validate-results path: | - src/astro-check.txt - src/astro-dry-run.txt + src/frontend/astro-check.txt + src/frontend/astro-dry-run.txt if-no-files-found: warn retention-days: 7 diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml index 0728c5f1..7c0ad6c7 100644 --- a/.github/workflows/security-scan.yml +++ b/.github/workflows/security-scan.yml @@ -33,7 +33,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Run pnpm audit - run: pnpm audit --audit-level=moderate | tee ../pnpm-audit.txt + run: pnpm audit --audit-level=moderate | tee pnpm-audit.txt continue-on-error: true - uses: actions/setup-dotnet@v4 @@ -41,7 +41,8 @@ jobs: global-json-file: global.json - name: Run .NET security scan - run: cd src/apphost/Aspire.Dev.AppHost && dotnet list package --vulnerable --include-transitive | tee ../../dotnet-vulnerabilities.txt + working-directory: src/apphost/Aspire.Dev.AppHost + run: dotnet list package --vulnerable --include-transitive | tee ../../../src/frontend/dotnet-vulnerabilities.txt continue-on-error: true - name: Trivy filesystem vulnerability scan (SARIF) @@ -69,7 +70,7 @@ jobs: name: security-scan-results path: | trivy-results.sarif - src/pnpm-audit.txt - src/dotnet-vulnerabilities.txt + src/frontend/pnpm-audit.txt + src/frontend/dotnet-vulnerabilities.txt if-no-files-found: warn retention-days: 7 From da9da7600ea81aa36f4786bd3c856561809f4731 Mon Sep 17 00:00:00 2001 From: David Pine Date: Mon, 8 Dec 2025 22:39:26 -0600 Subject: [PATCH 14/15] fix: Improve mobile responsiveness and styling of Install CLI modal --- .../src/components/InstallCliModal.astro | 192 ++++++++++++++---- 1 file changed, 152 insertions(+), 40 deletions(-) diff --git a/src/frontend/src/components/InstallCliModal.astro b/src/frontend/src/components/InstallCliModal.astro index 530aa986..78ebae41 100644 --- a/src/frontend/src/components/InstallCliModal.astro +++ b/src/frontend/src/components/InstallCliModal.astro @@ -194,22 +194,33 @@ const { id = 'install-cli-modal' } = Astro.props; openBtn.addEventListener('click', (e) => { e.preventDefault(); - // On mobile/smaller screens, navigate to the full page instead - if (window.innerWidth < 1600) { - window.location.href = '/get-started/install-cli/'; + // On mobile (under 50em/800px), or if mobile menu is open, redirect to the full page + // Modal can't compete with mobile sidebar's z-index + const mobileMenuBtn = document.querySelector('starlight-menu-button button'); + const mobileMenuOpen = mobileMenuBtn?.getAttribute('aria-expanded') === 'true'; + if (window.innerWidth < 800 || mobileMenuOpen) { + window.location.assign('/get-started/install-cli/'); return; } modal.showModal(); - // Position modal below the button + // Position modal below the button on larger screens const btnRect = openBtn.getBoundingClientRect(); const modalContent = modal.querySelector('.modal-content') as HTMLElement; if (modalContent) { - modalContent.style.position = 'absolute'; - modalContent.style.top = `${btnRect.bottom + 8}px`; - modalContent.style.right = `${window.innerWidth - btnRect.right}px`; + // Reset any previous positioning + modalContent.style.position = ''; + modalContent.style.top = ''; + modalContent.style.right = ''; + + // Only position absolutely below button on larger screens (72rem/1152px) + if (window.innerWidth >= 1152) { + modalContent.style.position = 'absolute'; + modalContent.style.top = `${btnRect.bottom + 8}px`; + modalContent.style.right = `${window.innerWidth - btnRect.right}px`; + } } // Load stored quality or default to release @@ -234,12 +245,32 @@ const { id = 'install-cli-modal' } = Astro.props; if (e.key === 'Escape') modal.close(); }); - // Close modal if window is resized below 1600px width + // Close modal if window is resized below mobile breakpoint window.addEventListener('resize', () => { - if (window.innerWidth < 1600 && modal.open) modal.close(); + if (window.innerWidth < 800 && modal.open) modal.close(); }); } + // Handle install button clicks via event delegation (works across page navigations) + document.addEventListener('click', (e) => { + const target = e.target as HTMLElement; + const openBtn = target.closest('[data-open-install-modal]'); + if (!openBtn) return; + + e.preventDefault(); + + // On mobile (under 50em/800px), or if mobile menu is open, redirect to the full page + // Modal can't compete with mobile sidebar's z-index + const mobileMenuBtn = document.querySelector('starlight-menu-button button'); + const mobileMenuOpen = mobileMenuBtn?.getAttribute('aria-expanded') === 'true'; + if (window.innerWidth < 800 || mobileMenuOpen) { + window.location.assign('/get-started/install-cli/'); + return; + } + + // Otherwise show the modal (handled by initializeModal's listener) + }); + // Initialize on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initializeModal); @@ -256,17 +287,18 @@ const { id = 'install-cli-modal' } = Astro.props; border: none; padding: 0; background: transparent; - margin: 0; + margin: auto; max-width: none; max-height: none; - width: auto; - height: auto; + width: 100%; + height: 100%; overflow: visible; + z-index: 2147483647; } .install-cli-modal::backdrop { - background: rgba(0, 0, 0, 0.1); - backdrop-filter: blur(2px); + background: rgba(0, 0, 0, 0.4); + backdrop-filter: blur(4px); } .modal-content { @@ -277,8 +309,11 @@ const { id = 'install-cli-modal' } = Astro.props; border-radius: 0.5rem; border: 1px solid var(--sl-color-gray-5); box-shadow: var(--sl-shadow-lg); - max-width: 90vw; - min-width: 25rem; + width: calc(100% - 2rem); + max-width: 40rem; + margin: 1rem auto; + max-height: calc(100vh - 2rem); + overflow-y: auto; .expressive-code .copy button:not([data-disable-copy]) { opacity: 1; @@ -294,13 +329,17 @@ const { id = 'install-cli-modal' } = Astro.props; display: flex; justify-content: space-between; align-items: center; - padding: 1.5rem; + padding: 1rem; border-bottom: 1px solid var(--sl-color-gray-5); + position: sticky; + top: 0; + background: var(--sl-color-bg); + z-index: 1; } .modal-header h2 { margin: 0; - font-size: 1.5rem; + font-size: var(--sl-text-lg); font-weight: 600; color: var(--sl-color-text); } @@ -326,16 +365,16 @@ const { id = 'install-cli-modal' } = Astro.props; } .modal-body { - padding: 1.5rem; + padding: 1rem; display: flex; flex-direction: column; - gap: 1.25rem; + gap: 1rem; } .install-option { display: flex; flex-direction: column; - gap: 0.75rem; + gap: 0.5rem; } .option-header { @@ -346,7 +385,7 @@ const { id = 'install-cli-modal' } = Astro.props; .option-header h3 { margin: 0; - font-size: 1rem; + font-size: var(--sl-text-sm); font-weight: 600; } @@ -355,17 +394,24 @@ const { id = 'install-cli-modal' } = Astro.props; margin: 0; } + .code-wrapper :global(pre) { + font-size: var(--sl-text-xs); + } + .quality-aside { - margin-top: 1rem; + margin-top: 0.5rem; } .modal-footer { - padding: 1rem 1.5rem 1.5rem; + padding: 1rem; border-top: 1px solid var(--sl-color-gray-5); display: flex; - justify-content: space-between; - align-items: center; - gap: 1rem; + flex-direction: column-reverse; + align-items: stretch; + gap: 0.75rem; + position: sticky; + bottom: 0; + background: var(--sl-color-bg); } .version-selector { @@ -373,10 +419,11 @@ const { id = 'install-cli-modal' } = Astro.props; align-items: center; gap: 0.5rem; position: relative; + justify-content: flex-end; } .version-selector label { - font-size: 0.875rem; + font-size: var(--sl-text-sm); font-weight: 500; color: var(--sl-color-text); } @@ -392,7 +439,7 @@ const { id = 'install-cli-modal' } = Astro.props; border-radius: 0.375rem; background-color: var(--sl-color-bg); color: var(--sl-color-text); - font-size: 0.875rem; + font-size: var(--sl-text-sm); cursor: pointer; transition: border-color 0.2s; appearance: none; @@ -442,10 +489,11 @@ const { id = 'install-cli-modal' } = Astro.props; .learn-more-link { display: inline-flex; align-items: center; + justify-content: center; gap: 0.5rem; color: var(--sl-color-text-accent); text-decoration: none; - font-size: 0.9rem; + font-size: var(--sl-text-sm); font-weight: 500; transition: opacity 0.2s; } @@ -463,25 +511,89 @@ const { id = 'install-cli-modal' } = Astro.props; transform: translateX(4px); } - @media (max-width: 640px) { + /* Tablet breakpoint (50em = 800px) */ + @media (min-width: 50em) { + .install-cli-modal::backdrop { + background: rgba(0, 0, 0, 0.2); + backdrop-filter: blur(2px); + } + .modal-content { - width: 95vw; - max-width: none; - min-width: unset; + margin: 2rem auto; + max-height: calc(100vh - 4rem); + } + + .modal-header { + padding: 1.25rem 1.5rem; } .modal-header h2 { - font-size: 1.25rem; + font-size: var(--sl-text-xl); } - .modal-footer { - flex-direction: column-reverse; - align-items: flex-start; + .modal-body { + padding: 1.25rem 1.5rem; + gap: 1.25rem; + } + + .install-option { gap: 0.75rem; } - .version-selector { - align-self: flex-end; + .option-header h3 { + font-size: var(--sl-text-base); + } + + .code-wrapper :global(pre) { + font-size: var(--sl-text-sm); + } + + .modal-footer { + padding: 1rem 1.5rem 1.5rem; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + + .learn-more-link { + justify-content: flex-start; + } + } + + /* Desktop breakpoint (72rem = 1152px) */ + @media (min-width: 72rem) { + .install-cli-modal { + margin: 0; + width: auto; + height: auto; + } + + .install-cli-modal::backdrop { + background: rgba(0, 0, 0, 0.1); + } + + .modal-content { + min-width: 38rem; + max-width: 42rem; + margin: 0; + max-height: calc(100vh - 6rem); + } + + .modal-header { + padding: 1.5rem; + position: static; + } + + .modal-header h2 { + font-size: var(--sl-text-2xl); + } + + .modal-body { + padding: 1.5rem; + } + + .modal-footer { + position: static; } } From 8565a7aa0b81e110775a0a6bb347d48337bd5027 Mon Sep 17 00:00:00 2001 From: David Pine Date: Tue, 9 Dec 2025 10:07:59 -0600 Subject: [PATCH 15/15] fix: Update devcontainer and package.json for pnpm version 10.25.0 and adjust VSCode extensions --- .devcontainer/devcontainer.json | 10 ++++++++-- .vscode/extensions.json | 3 +-- src/frontend/package.json | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2b87f754..74360548 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,10 +1,16 @@ { "name": "Aspire.Dev", "image": "mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm", + "features": { + "ghcr.io/devcontainers-extra/features/pnpm:2": { + "version": "10.25.0" + } + }, "customizations": { "vscode": { "extensions": [ - "astro-build.astro-vscode" + "astro-build.astro-vscode", + "unifiedjs.vscode-mdx" ], "settings": { "terminal.integrated.defaultProfile.linux": "bash" @@ -18,6 +24,6 @@ "onAutoForward": "openBrowser" } }, - "postCreateCommand": "npm install -g pnpm && pnpm install && echo '\n✨ Ready to go! Run \"pnpm dev\" to start the dev server.\n'", + "postCreateCommand": "pnpm install && echo '\n✨ Ready to go! Run \"pnpm dev\" to start the dev server.\n'", "remoteUser": "node" } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index c402d5b4..9cf3acd0 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,7 @@ { "recommendations": [ "astro-build.astro-vscode", - "unifiedjs.vscode-mdx", - "hideoo.starlight-i18n" + "unifiedjs.vscode-mdx" ], "unwantedRecommendations": [] } \ No newline at end of file diff --git a/src/frontend/package.json b/src/frontend/package.json index 7f83a643..3cbc6b69 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -2,6 +2,7 @@ "name": "aspire.dev", "type": "module", "version": "0.0.1", + "packageManager": "pnpm@10.25.0", "license": "MIT", "repository": { "type": "git",