commit dcca6b154a9f8e56d9ad07d54fdc1c6e1fb28d7b Author: Web-serfer Date: Thu Mar 26 04:05:46 2026 +0500 Initial commit: Astro frontend project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7214e3a --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Dependency directories +node_modules/ +frontend/node_modules/ +backend/node_modules/ + +# Build outputs +dist/ +frontend/dist/ +backend/dist/ +*.log + +# Environment variables +.env +.env.local +.env.production + +# OS generated files +.DS_Store +Thumbs.db + +# IDE files +.idea/ +.vscode/ +*.iml + +# Qwen assistant files +.qwen/ + +# Backend (PocketBase) - не включается в репозиторий +backend/ + +# Executable files +*.exe + +# Lock files (генерируются автоматически) +# bun.lock \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..2edeafb --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/QWEN.md b/QWEN.md new file mode 100644 index 0000000..3aea08b --- /dev/null +++ b/QWEN.md @@ -0,0 +1,61 @@ +# Правила взаимодействия с Qwen Code Assistant + +## Основные принципы + +1. **Изменения в коде возможны только с явного разрешения пользователя** + - Перед внесением любых изменений в файлы ассистент должен получить подтверждение от пользователя + - Все изменения должны быть предварительно объяснены пользователю + - Перед решением конкретной задачи всегда составлять план + - После внесения изменений в код - проводить проверку - только после этого приступать к дальнейшему решению задачи + +2. **Прозрачность действий** + - Ассистент должен объяснить, какие изменения планируется внести + - Необходимо указать, в какие файлы будут внесены изменения + - Следует объяснить последствия предполагаемых изменений + +3. **Безопасность кода** + - Все изменения должны проходить проверку на безопасность + - Не должны вноситься изменения, которые могут повредить функциональность приложения + - Рекомендуется создание резервных копий при значительных изменениях + +4. **Согласование архитектурных решений** + - При внесении изменений, затрагивающих архитектуру приложения, необходима дискуссия с пользователем + - Предложения по улучшению архитектуры должны обсуждаться до реализации + +5. **Работа с разными типами проектов** + - Уважать существующую архитектуру и стиль кода проекта + - Следовать установленным в проекте принципам и паттернам + +6. **Использование Bun** + - Все команды должны выполняться с использованием Bun (bun install, bun dev, bun build и т.д.) + - При создании скриптов в package.json, они должны быть совместимы с Bun + +7. **Язык общения** + - Всё общение с пользователем происходит на русском языке + +8. **Проверка изменений** + - После внесения изменений в код не требуется запускать сервер разработки для проверки + - Пользователь самостоятельно запускает сервер и проверяет изменения + +9. **Проверка типов данных** + - Проверять проект на ошибки типизации через команду `bun run tsc --noEmit -p frontend/tsconfig.json` + - В проекте не должно быть типов any + - Все интерфейсы компонентов прописывать в файле globalInterfaces.ts + - При работе с PocketBase использовать актуальные сигнатуры методов из файла `D:\Verstka\production\astro_minivan\frontend\node_modules\pocketbase\dist\pocketbase.es.d.ts` + +10. **Плагин @astrojs/sitemap** + - Обязательно к установке в проект пакета @astrojs/sitemap + - Обязательно к созданию в проекте файла .nvmrc + +11. **Замена хоста при развертывании проекта** + - Обязательно нужно изменить http://localhost:3000/ в шаблонах писем на реальный + + + +## Qwen Added Memories +- URL документации Astro: https://docs.astro.build/en/getting-started/ +- URL документации PocketBase: https://pocketbase.io/docs/ +- URL документации SolidJS: https://docs.solidjs.com/solid-start/getting-started +- URL документации astro-icons: https://www.astroicon.dev/getting-started/ +- URL документации PayloadCMS: https://payloadcms.com/docs/getting-started/what-is-payload +- URL документации Prisma ORM и Astro: https://www.prisma.io/docs/ai/prompts/astro diff --git a/README.md b/README.md new file mode 100644 index 0000000..846cae9 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# Astro REDi Monorepo + +Этот монорепозиторий содержит frontend и backend части приложения Astro REDi. + +## Структура проекта + +- `frontend/` - Astro-приложение для фронтенда +- `backend/` - PocketBase-приложение для бэкенда + +## Установка + +1. Установите зависимости для всего проекта: + +```bash +bun install +``` + +2. Установите зависимости для frontend: + +```bash +cd frontend && bun install +``` + +Или выполните установку всех зависимостей одной командой: + +```bash +bun run install:all +``` + +## Запуск приложения + +Для одновременного запуска frontend и backend приложения выполните: + +```bash +bun run dev +``` + +Для запуска только frontend: + +```bash +bun run dev:frontend +``` + +Для запуска только backend: + +```bash +bun run dev:backend +``` + +Для остановки запущенных процессов: + +```bash +bun run stop +``` + +## Сборка проекта + +Для сборки frontend приложения: + +```bash +bun run build +``` \ No newline at end of file diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..035270a --- /dev/null +++ b/bun.lock @@ -0,0 +1,70 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "astro-redi-monorepo", + "devDependencies": { + "concurrently": "^8.2.0", + }, + }, + }, + "packages": { + "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "concurrently": ["concurrently@8.2.2", "", { "dependencies": { "chalk": "^4.1.2", "date-fns": "^2.30.0", "lodash": "^4.17.21", "rxjs": "^7.8.1", "shell-quote": "^1.8.1", "spawn-command": "0.0.2", "supports-color": "^8.1.1", "tree-kill": "^1.2.2", "yargs": "^17.7.2" }, "bin": { "conc": "dist/bin/concurrently.js", "concurrently": "dist/bin/concurrently.js" } }, "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg=="], + + "date-fns": ["date-fns@2.30.0", "", { "dependencies": { "@babel/runtime": "^7.21.0" } }, "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="], + + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + + "spawn-command": ["spawn-command@0.0.2", "", {}, "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + } +} diff --git a/frontend/.editorconfig b/frontend/.editorconfig new file mode 100644 index 0000000..ebe51d3 --- /dev/null +++ b/frontend/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..16d54bb --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/frontend/.nvmrc b/frontend/.nvmrc new file mode 100644 index 0000000..2edeafb --- /dev/null +++ b/frontend/.nvmrc @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..1f0b0d0 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,14 @@ +# Redi.dev: Создание современных сайтов на Astro и Next.js + +Добро пожаловать на Redi.dev – ваш ресурс для изучения и создания высокопроизводительных веб-сайтов с использованием передовых фреймворков Astro и Next.js. Здесь вы найдете статьи, руководства и примеры проектов, посвященные разработке современных, быстрых и SEO-оптимизированных решений. + +Мы фокусируемся на технологиях, которые позволяют создавать исключительный пользовательский опыт и обеспечивать максимальную производительность. + + + +На Redi.dev мы делимся опытом в: + +- **Astro:** Создание контент-ориентированных сайтов с молниеносной загрузкой благодаря уникальной "островной" архитектуре. +- **Next.js:** Разработка мощных и масштабируемых веб-приложений с серверным рендерингом и статической генерацией. + +Присоединяйтесь к нам, чтобы освоить лучшие практики современной веб-разработки! diff --git a/frontend/astro.config.mjs b/frontend/astro.config.mjs new file mode 100644 index 0000000..ad2d2bd --- /dev/null +++ b/frontend/astro.config.mjs @@ -0,0 +1,23 @@ +import { defineConfig } from "astro/config"; +import solidJs from '@astrojs/solid-js'; +import tailwind from "@astrojs/tailwind"; +import icon from "astro-icon"; +import sitemap from "@astrojs/sitemap"; +import node from "@astrojs/node"; + +// https://astro.build/config +export default defineConfig({ + site: process.env.PUBLIC_SITE_URL || "https://hts.ru", // Заменить на реальный домен при развертывании + integrations: [tailwind(), solidJs(), icon(), sitemap()], + output: "server", + + vite: { + build: { + // Встраивать CSS размером до 15 КБ + cssInlineLimit: 15000 + } + }, + adapter: node({ + mode: "standalone", + }), +}); \ No newline at end of file diff --git a/frontend/bun.lock b/frontend/bun.lock new file mode 100644 index 0000000..88499f1 --- /dev/null +++ b/frontend/bun.lock @@ -0,0 +1,1299 @@ +{ + "lockfileVersion": 1, + "configVersion": 0, + "workspaces": { + "": { + "name": "redi-dev", + "dependencies": { + "@astrojs/node": "10.0.3", + "@astrojs/sitemap": "3.7.1", + "@astrojs/solid-js": "6.0.1", + "@nanostores/solid": "^1.1.1", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/forms": "^0.5.11", + "astro-icon": "^1.1.5", + "nanostores": "^1.0.1", + "pocketbase": "^0.26.5", + "sharp": "^0.34.3", + "solid-icons": "^1.1.0", + "solid-js": "^1.9.9", + }, + "devDependencies": { + "@astrojs/check": "0.9.8", + "@astrojs/tailwind": "^6.0.2", + "@biomejs/biome": "1.7.3", + "@tailwindcss/typography": "^0.5.13", + "astro": "6.0.8", + "tailwindcss": "^3.4.3", + "typescript": "^5.4.5", + }, + }, + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + + "@antfu/utils": ["@antfu/utils@8.1.1", "", {}, "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ=="], + + "@astrojs/check": ["@astrojs/check@0.9.8", "", { "dependencies": { "@astrojs/language-server": "^2.16.5", "chokidar": "^4.0.3", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "bin/astro-check.js" } }, "sha512-LDng8446QLS5ToKjRHd3bgUdirvemVVExV7nRyJfW2wV36xuv7vDxwy5NWN9zqeSEDgg0Tv84sP+T3yEq+Zlkw=="], + + "@astrojs/compiler": ["@astrojs/compiler@3.0.1", "", {}, "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA=="], + + "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.8.0", "", { "dependencies": { "picomatch": "^4.0.3" } }, "sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w=="], + + "@astrojs/language-server": ["@astrojs/language-server@2.16.6", "", { "dependencies": { "@astrojs/compiler": "^2.13.1", "@astrojs/yaml2ts": "^0.2.3", "@jridgewell/sourcemap-codec": "^1.5.5", "@volar/kit": "~2.4.28", "@volar/language-core": "~2.4.28", "@volar/language-server": "~2.4.28", "@volar/language-service": "~2.4.28", "muggle-string": "^0.4.1", "tinyglobby": "^0.2.15", "volar-service-css": "0.0.70", "volar-service-emmet": "0.0.70", "volar-service-html": "0.0.70", "volar-service-prettier": "0.0.70", "volar-service-typescript": "0.0.70", "volar-service-typescript-twoslash-queries": "0.0.70", "volar-service-yaml": "0.0.70", "vscode-html-languageservice": "^5.6.2", "vscode-uri": "^3.1.0" }, "peerDependencies": { "prettier": "^3.0.0", "prettier-plugin-astro": ">=0.11.0" }, "optionalPeers": ["prettier", "prettier-plugin-astro"], "bin": { "astro-ls": "bin/nodeServer.js" } }, "sha512-N990lu+HSFiG57owR0XBkr02BYMgiLCshLf+4QG4v6jjSWkBeQGnzqi+E1L08xFPPJ7eEeXnxPXGLaVv5pa4Ug=="], + + "@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.0.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@astrojs/prism": "4.0.1", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "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": "^4.0.0", "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-zAfLJmn07u9SlDNNHTpjv0RT4F8D4k54NR7ReRas8CO4OeGoqSvOuKwqCFg2/cqN3wHwdWlK/7Yv/lMXlhVIaw=="], + + "@astrojs/node": ["@astrojs/node@10.0.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "send": "^1.2.1", "server-destroy": "^1.0.1" }, "peerDependencies": { "astro": "^6.0.0" } }, "sha512-yWDPaXTOw34h9qNpxDBz1Xj5HudnyuWW2E8ZSegW6o8n+mKI3Yq/iLAUQfxA3h8wfaIRY/PCh3T2jLAys2SXeQ=="], + + "@astrojs/prism": ["@astrojs/prism@4.0.1", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ=="], + + "@astrojs/sitemap": ["@astrojs/sitemap@3.7.1", "", { "dependencies": { "sitemap": "^9.0.0", "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, "sha512-IzQqdTeskaMX+QDZCzMuJIp8A8C1vgzMBp/NmHNnadepHYNHcxQdGLQZYfkbd2EbRXUfOS+UDIKx8sKg0oWVdw=="], + + "@astrojs/solid-js": ["@astrojs/solid-js@6.0.1", "", { "dependencies": { "vite": "^7.3.1", "vite-plugin-solid": "^2.11.10" }, "peerDependencies": { "solid-devtools": "^0.30.1", "solid-js": "^1.8.5" }, "optionalPeers": ["solid-devtools"] }, "sha512-6g2DEtznW2ithiaDY3qyCSdnyNBjpXfKR2qCnvxxdmZZlO+8AC85KkEX4BpnJrzVfy7ptx0/WYKuBRCFdheo8Q=="], + + "@astrojs/tailwind": ["@astrojs/tailwind@6.0.2", "", { "dependencies": { "autoprefixer": "^10.4.21", "postcss": "^8.5.3", "postcss-load-config": "^4.0.2" }, "peerDependencies": { "astro": "^3.0.0 || ^4.0.0 || ^5.0.0", "tailwindcss": "^3.0.24" } }, "sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg=="], + + "@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "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" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="], + + "@astrojs/yaml2ts": ["@astrojs/yaml2ts@0.2.3", "", { "dependencies": { "yaml": "^2.8.2" } }, "sha512-PJzRmgQzUxI2uwpdX2lXSHtP4G8ocp24/t+bZyf5Fy0SZLSF9f9KXZoMlFM/XCGue+B0nH/2IZ7FpBYQATBsCg=="], + + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + + "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + + "@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], + + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + + "@biomejs/biome": ["@biomejs/biome@1.7.3", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "1.7.3", "@biomejs/cli-darwin-x64": "1.7.3", "@biomejs/cli-linux-arm64": "1.7.3", "@biomejs/cli-linux-arm64-musl": "1.7.3", "@biomejs/cli-linux-x64": "1.7.3", "@biomejs/cli-linux-x64-musl": "1.7.3", "@biomejs/cli-win32-arm64": "1.7.3", "@biomejs/cli-win32-x64": "1.7.3" }, "bin": { "biome": "bin/biome" } }, "sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ=="], + + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@1.7.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ=="], + + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@1.7.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg=="], + + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@1.7.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w=="], + + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@1.7.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw=="], + + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@1.7.3", "", { "os": "linux", "cpu": "x64" }, "sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA=="], + + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@1.7.3", "", { "os": "linux", "cpu": "x64" }, "sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA=="], + + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@1.7.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q=="], + + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@1.7.3", "", { "os": "win32", "cpu": "x64" }, "sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w=="], + + "@capsizecss/unpack": ["@capsizecss/unpack@4.0.0", "", { "dependencies": { "fontkitten": "^1.0.0" } }, "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA=="], + + "@clack/core": ["@clack/core@1.1.0", "", { "dependencies": { "sisteransi": "^1.0.5" } }, "sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA=="], + + "@clack/prompts": ["@clack/prompts@1.1.0", "", { "dependencies": { "@clack/core": "1.1.0", "sisteransi": "^1.0.5" } }, "sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g=="], + + "@emmetio/abbreviation": ["@emmetio/abbreviation@2.3.3", "", { "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA=="], + + "@emmetio/css-abbreviation": ["@emmetio/css-abbreviation@2.1.8", "", { "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw=="], + + "@emmetio/css-parser": ["@emmetio/css-parser@0.4.1", "", { "dependencies": { "@emmetio/stream-reader": "^2.2.0", "@emmetio/stream-reader-utils": "^0.1.0" } }, "sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ=="], + + "@emmetio/html-matcher": ["@emmetio/html-matcher@1.3.0", "", { "dependencies": { "@emmetio/scanner": "^1.0.0" } }, "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ=="], + + "@emmetio/scanner": ["@emmetio/scanner@1.0.4", "", {}, "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA=="], + + "@emmetio/stream-reader": ["@emmetio/stream-reader@2.2.0", "", {}, "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw=="], + + "@emmetio/stream-reader-utils": ["@emmetio/stream-reader-utils@0.1.0", "", {}, "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.4", "", { "os": "android", "cpu": "arm" }, "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.4", "", { "os": "android", "cpu": "arm64" }, "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.4", "", { "os": "android", "cpu": "x64" }, "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.4", "", { "os": "linux", "cpu": "arm" }, "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.4", "", { "os": "linux", "cpu": "ia32" }, "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.4", "", { "os": "linux", "cpu": "x64" }, "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.4", "", { "os": "none", "cpu": "x64" }, "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.4", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.4", "", { "os": "sunos", "cpu": "x64" }, "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.4", "", { "os": "win32", "cpu": "x64" }, "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg=="], + + "@iconify/tools": ["@iconify/tools@4.2.0", "", { "dependencies": { "@iconify/types": "^2.0.0", "@iconify/utils": "^2.3.0", "cheerio": "^1.1.2", "domhandler": "^5.0.3", "extract-zip": "^2.0.1", "local-pkg": "^1.1.2", "pathe": "^2.0.3", "svgo": "^3.3.2", "tar": "^7.5.2" } }, "sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@2.3.0", "", { "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", "@iconify/types": "^2.0.0", "debug": "^4.4.0", "globals": "^15.14.0", "kolorist": "^1.8.0", "local-pkg": "^1.0.0", "mlly": "^1.7.4" } }, "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA=="], + + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@nanostores/solid": ["@nanostores/solid@1.1.1", "", { "peerDependencies": { "nanostores": ">=0.9.0 <2.0.0", "solid-js": "^1.6.0" } }, "sha512-gF0Eat1/c3hOaklBMSVoEjcNzJc5zGk4VSg94H9LPmXYww1pxgr7zylpi3jjyxRu24c8+aYNkmRWzolAwzSA1A=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], + + "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.5", "", { "os": "android", "cpu": "arm" }, "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.5", "", { "os": "android", "cpu": "arm64" }, "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.5", "", { "os": "linux", "cpu": "arm" }, "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.5", "", { "os": "linux", "cpu": "arm" }, "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.5", "", { "os": "linux", "cpu": "none" }, "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.5", "", { "os": "linux", "cpu": "none" }, "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.5", "", { "os": "linux", "cpu": "none" }, "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.5", "", { "os": "linux", "cpu": "x64" }, "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.5", "", { "os": "none", "cpu": "arm64" }, "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.5", "", { "os": "win32", "cpu": "x64" }, "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.5", "", { "os": "win32", "cpu": "x64" }, "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ=="], + + "@shikijs/core": ["@shikijs/core@4.0.2", "", { "dependencies": { "@shikijs/primitive": "4.0.2", "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw=="], + + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag=="], + + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg=="], + + "@shikijs/langs": ["@shikijs/langs@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2" } }, "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg=="], + + "@shikijs/primitive": ["@shikijs/primitive@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw=="], + + "@shikijs/themes": ["@shikijs/themes@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2" } }, "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA=="], + + "@shikijs/types": ["@shikijs/types@4.0.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg=="], + + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + + "@tailwindcss/container-queries": ["@tailwindcss/container-queries@0.1.1", "", { "peerDependencies": { "tailwindcss": ">=3.2.0" } }, "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA=="], + + "@tailwindcss/forms": ["@tailwindcss/forms@0.5.11", "", { "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA=="], + + "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], + + "@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + + "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + + "@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], + + "@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="], + + "@types/sax": ["@types/sax@1.2.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A=="], + + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + + "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + + "@volar/kit": ["@volar/kit@2.4.28", "", { "dependencies": { "@volar/language-service": "2.4.28", "@volar/typescript": "2.4.28", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "typescript": "*" } }, "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg=="], + + "@volar/language-core": ["@volar/language-core@2.4.28", "", { "dependencies": { "@volar/source-map": "2.4.28" } }, "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ=="], + + "@volar/language-server": ["@volar/language-server@2.4.28", "", { "dependencies": { "@volar/language-core": "2.4.28", "@volar/language-service": "2.4.28", "@volar/typescript": "2.4.28", "path-browserify": "^1.0.1", "request-light": "^0.7.0", "vscode-languageserver": "^9.0.1", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw=="], + + "@volar/language-service": ["@volar/language-service@2.4.28", "", { "dependencies": { "@volar/language-core": "2.4.28", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw=="], + + "@volar/source-map": ["@volar/source-map@2.4.28", "", {}, "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ=="], + + "@volar/typescript": ["@volar/typescript@2.4.28", "", { "dependencies": { "@volar/language-core": "2.4.28", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw=="], + + "@vscode/emmet-helper": ["@vscode/emmet-helper@2.11.0", "", { "dependencies": { "emmet": "^2.4.3", "jsonc-parser": "^2.3.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.15.1", "vscode-uri": "^3.0.8" } }, "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw=="], + + "@vscode/l10n": ["@vscode/l10n@0.0.18", "", {}, "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ=="], + + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "ajv-draft-04": ["ajv-draft-04@1.0.0", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + + "array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="], + + "astro": ["astro@6.0.8", "", { "dependencies": { "@astrojs/compiler": "^3.0.0", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.0.1", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.0.1", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyclip": "^0.1.6", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-DCPeb8GKOoFWh+8whB7Qi/kKWD/6NcQ9nd1QVNzJFxgHkea3WYrNroQRq4whmBdjhkYPTLS/1gmUAl2iA2Es2g=="], + + "astro-icon": ["astro-icon@1.1.5", "", { "dependencies": { "@iconify/tools": "^4.0.5", "@iconify/types": "^2.0.0", "@iconify/utils": "^2.1.30" } }, "sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw=="], + + "autoprefixer": ["autoprefixer@10.4.23", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001760", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA=="], + + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + + "babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.40.3", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", "@babel/types": "^7.20.7", "html-entities": "2.3.3", "parse5": "^7.1.2" }, "peerDependencies": { "@babel/core": "^7.20.12" } }, "sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w=="], + + "babel-preset-solid": ["babel-preset-solid@1.9.10", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.40.3" }, "peerDependencies": { "@babel/core": "^7.0.0", "solid-js": "^1.9.10" }, "optionalPeers": ["solid-js"] }, "sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ=="], + + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.8", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001760", "", {}, "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw=="], + + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "cheerio": ["cheerio@1.1.2", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.0.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.12.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg=="], + + "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + + "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + + "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + + "commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + + "common-ancestor-path": ["common-ancestor-path@2.0.0", "", {}, "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng=="], + + "confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + + "cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="], + + "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], + + "css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="], + + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], + + "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "devalue": ["devalue@5.6.4", "", {}, "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA=="], + + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + + "diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], + + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + + "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], + + "emmet": ["emmet@2.4.11", "", { "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" } }, "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + + "es-module-lexer": ["es-module-lexer@2.0.0", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="], + + "esbuild": ["esbuild@0.27.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.4", "@esbuild/android-arm": "0.27.4", "@esbuild/android-arm64": "0.27.4", "@esbuild/android-x64": "0.27.4", "@esbuild/darwin-arm64": "0.27.4", "@esbuild/darwin-x64": "0.27.4", "@esbuild/freebsd-arm64": "0.27.4", "@esbuild/freebsd-x64": "0.27.4", "@esbuild/linux-arm": "0.27.4", "@esbuild/linux-arm64": "0.27.4", "@esbuild/linux-ia32": "0.27.4", "@esbuild/linux-loong64": "0.27.4", "@esbuild/linux-mips64el": "0.27.4", "@esbuild/linux-ppc64": "0.27.4", "@esbuild/linux-riscv64": "0.27.4", "@esbuild/linux-s390x": "0.27.4", "@esbuild/linux-x64": "0.27.4", "@esbuild/netbsd-arm64": "0.27.4", "@esbuild/netbsd-x64": "0.27.4", "@esbuild/openbsd-arm64": "0.27.4", "@esbuild/openbsd-x64": "0.27.4", "@esbuild/openharmony-arm64": "0.27.4", "@esbuild/sunos-x64": "0.27.4", "@esbuild/win32-arm64": "0.27.4", "@esbuild/win32-ia32": "0.27.4", "@esbuild/win32-x64": "0.27.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "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" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], + + "fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], + + "fontkitten": ["fontkitten@1.0.3", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], + + "h3": ["h3@1.15.10", "", { "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.3", "uncrypto": "^0.1.3" } }, "sha512-YzJeWSkDZxAhvmp8dexjRK5hxziRO7I9m0N53WhvYL5NiWfkUkzssVzY9jvGu0HBoLFW6+duYmNSn6MaZBCCtg=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "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" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], + + "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "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" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], + + "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], + + "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], + + "hast-util-raw": ["hast-util-raw@9.1.0", "", { "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" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], + + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "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" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], + + "hast-util-to-parse5": ["hast-util-to-parse5@8.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA=="], + + "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "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" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + + "hastscript": ["hastscript@9.0.1", "", { "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" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], + + "html-entities": ["html-entities@2.3.3", "", {}, "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="], + + "html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="], + + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + + "htmlparser2": ["htmlparser2@10.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.1", "entities": "^6.0.0" } }, "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g=="], + + "http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "is-what": ["is-what@4.1.16", "", {}, "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="], + + "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jsonc-parser": ["jsonc-parser@2.3.1", "", {}, "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg=="], + + "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], + + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], + + "lru-cache": ["lru-cache@11.2.7", "", {}, "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "magicast": ["magicast@0.5.2", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ=="], + + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + + "mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="], + + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "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" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], + + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "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" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], + + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "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" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], + + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "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" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], + + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "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" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "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" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "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" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "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" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + + "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], + + "merge-anything": ["merge-anything@5.1.7", "", { "dependencies": { "is-what": "^4.1.8" } }, "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromark": ["micromark@4.0.2", "", { "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" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "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" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "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" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], + + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "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" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], + + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "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" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "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" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "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" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "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" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "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" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "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" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "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" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + + "mini-svg-data-uri": ["mini-svg-data-uri@1.4.4", "", { "bin": { "mini-svg-data-uri": "cli.js" } }, "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], + + "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], + + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], + + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "nanostores": ["nanostores@1.1.0", "", {}, "sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA=="], + + "neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="], + + "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], + + "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], + + "node-mock-http": ["node-mock-http@1.0.4", "", {}, "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ=="], + + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], + + "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], + + "p-limit": ["p-limit@7.3.0", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw=="], + + "p-queue": ["p-queue@9.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^7.0.0" } }, "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw=="], + + "p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], + + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + + "parse-latin": ["parse-latin@7.0.0", "", { "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" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], + + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + + "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + + "piccolore": ["piccolore@0.1.3", "", {}, "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], + + "pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "pocketbase": ["pocketbase@0.26.5", "", {}, "sha512-SXcq+sRvVpNxfLxPB1C+8eRatL7ZY4o3EVl/0OdE3MeR9fhPyZt0nmmxLqYmkLvXCN9qp3lXWV/0EUYb3MmMXQ=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], + + "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + + "postcss-selector-parser": ["postcss-selector-parser@6.0.10", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], + + "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], + + "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + + "pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="], + + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + + "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], + + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], + + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], + + "rehype": ["rehype@13.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", "rehype-stringify": "^10.0.0", "unified": "^11.0.0" } }, "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A=="], + + "rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="], + + "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], + + "rehype-stringify": ["rehype-stringify@10.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", "unified": "^11.0.0" } }, "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA=="], + + "remark-gfm": ["remark-gfm@4.0.1", "", { "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" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], + + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + + "remark-rehype": ["remark-rehype@11.1.2", "", { "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" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + + "remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="], + + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], + + "request-light": ["request-light@0.7.0", "", {}, "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], + + "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], + + "retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="], + + "retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rollup": ["rollup@4.53.5", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.5", "@rollup/rollup-android-arm64": "4.53.5", "@rollup/rollup-darwin-arm64": "4.53.5", "@rollup/rollup-darwin-x64": "4.53.5", "@rollup/rollup-freebsd-arm64": "4.53.5", "@rollup/rollup-freebsd-x64": "4.53.5", "@rollup/rollup-linux-arm-gnueabihf": "4.53.5", "@rollup/rollup-linux-arm-musleabihf": "4.53.5", "@rollup/rollup-linux-arm64-gnu": "4.53.5", "@rollup/rollup-linux-arm64-musl": "4.53.5", "@rollup/rollup-linux-loong64-gnu": "4.53.5", "@rollup/rollup-linux-ppc64-gnu": "4.53.5", "@rollup/rollup-linux-riscv64-gnu": "4.53.5", "@rollup/rollup-linux-riscv64-musl": "4.53.5", "@rollup/rollup-linux-s390x-gnu": "4.53.5", "@rollup/rollup-linux-x64-gnu": "4.53.5", "@rollup/rollup-linux-x64-musl": "4.53.5", "@rollup/rollup-openharmony-arm64": "4.53.5", "@rollup/rollup-win32-arm64-msvc": "4.53.5", "@rollup/rollup-win32-ia32-msvc": "4.53.5", "@rollup/rollup-win32-x64-gnu": "4.53.5", "@rollup/rollup-win32-x64-msvc": "4.53.5", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], + + "seroval": ["seroval@1.3.2", "", {}, "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="], + + "seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="], + + "server-destroy": ["server-destroy@1.0.1", "", {}, "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "sharp": ["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" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "shiki": ["shiki@4.0.2", "", { "dependencies": { "@shikijs/core": "4.0.2", "@shikijs/engine-javascript": "4.0.2", "@shikijs/engine-oniguruma": "4.0.2", "@shikijs/langs": "4.0.2", "@shikijs/themes": "4.0.2", "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ=="], + + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + + "sitemap": ["sitemap@9.0.1", "", { "dependencies": { "@types/node": "^24.9.2", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.4.1" }, "bin": { "sitemap": "dist/esm/cli.js" } }, "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ=="], + + "smol-toml": ["smol-toml@1.6.1", "", {}, "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg=="], + + "solid-icons": ["solid-icons@1.1.0", "", { "peerDependencies": { "solid-js": "*" } }, "sha512-IesTfr/F1ElVwH2E1110s2RPXH4pujKfSs+koT8rwuTAdleO5s26lNSpqJV7D1+QHooJj18mcOiz2PIKs0ic+A=="], + + "solid-js": ["solid-js@1.9.10", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew=="], + + "solid-refresh": ["solid-refresh@0.6.3", "", { "dependencies": { "@babel/generator": "^7.23.6", "@babel/helper-module-imports": "^7.22.15", "@babel/types": "^7.23.6" }, "peerDependencies": { "solid-js": "^1.3" } }, "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "stream-replace-string": ["stream-replace-string@2.0.0", "", {}, "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "svgo": ["svgo@4.0.0", "", { "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": "./bin/svgo.js" }, "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw=="], + + "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ=="], + + "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], + + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + + "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], + + "tinyclip": ["tinyclip@0.1.12", "", {}, "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA=="], + + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + + "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typesafe-path": ["typesafe-path@0.2.2", "", {}, "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-auto-import-cache": ["typescript-auto-import-cache@0.3.6", "", { "dependencies": { "semver": "^7.3.8" } }, "sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ=="], + + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + + "ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="], + + "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], + + "undici": ["undici@7.16.0", "", {}, "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + + "unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], + + "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], + + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="], + + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], + + "unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + + "unstorage": ["unstorage@1.17.4", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.5", "lru-cache": "^11.2.0", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], + + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], + + "vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="], + + "vitefu": ["vitefu@1.1.2", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw=="], + + "volar-service-css": ["volar-service-css@0.0.70", "", { "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-K1qyOvBpE3rzdAv3e4/6Rv5yizrYPy5R/ne3IWCAzLBuMO4qBMV3kSqWzj6KUVe6S0AnN6wxF7cRkiaKfYMYJw=="], + + "volar-service-emmet": ["volar-service-emmet@0.0.70", "", { "dependencies": { "@emmetio/css-parser": "^0.4.1", "@emmetio/html-matcher": "^1.3.0", "@vscode/emmet-helper": "^2.9.3", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-xi5bC4m/VyE3zy/n2CXspKeDZs3qA41tHLTw275/7dNWM/RqE2z3BnDICQybHIVp/6G1iOQj5c1qXMgQC08TNg=="], + + "volar-service-html": ["volar-service-html@0.0.70", "", { "dependencies": { "vscode-html-languageservice": "^5.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-eR6vCgMdmYAo4n+gcT7DSyBQbwB8S3HZZvSagTf0sxNaD4WppMCFfpqWnkrlGStPKMZvMiejRRVmqsX9dYcTvQ=="], + + "volar-service-prettier": ["volar-service-prettier@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0", "prettier": "^2.2 || ^3.0" }, "optionalPeers": ["@volar/language-service", "prettier"] }, "sha512-Z6BCFSpGVCd8BPAsZ785Kce1BGlWd5ODqmqZGVuB14MJvrR4+CYz6cDy4F+igmE1gMifqfvMhdgT8Aud4M5ngg=="], + + "volar-service-typescript": ["volar-service-typescript@0.0.70", "", { "dependencies": { "path-browserify": "^1.0.1", "semver": "^7.6.2", "typescript-auto-import-cache": "^0.3.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-nls": "^5.2.0", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-l46Bx4cokkUedTd74ojO5H/zqHZJ8SUuyZ0IB8JN4jfRqUM3bQFBHoOwlZCyZmOeO0A3RQNkMnFclxO4c++gsg=="], + + "volar-service-typescript-twoslash-queries": ["volar-service-typescript-twoslash-queries@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-IdD13Z9N2Bu8EM6CM0fDV1E69olEYGHDU25X51YXmq8Y0CmJ2LNj6gOiBJgpS5JGUqFzECVhMNBW7R0sPdRTMQ=="], + + "volar-service-yaml": ["volar-service-yaml@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8", "yaml-language-server": "~1.20.0" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-0c8bXDBeoATF9F6iPIlOuYTuZAC4c+yi0siQo920u7eiBJk8oQmUmg9cDUbR4+Gl++bvGP4plj3fErbJuPqdcQ=="], + + "vscode-css-languageservice": ["vscode-css-languageservice@6.3.9", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "3.17.5", "vscode-uri": "^3.1.0" } }, "sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA=="], + + "vscode-html-languageservice": ["vscode-html-languageservice@5.6.2", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "^3.17.5", "vscode-uri": "^3.1.0" } }, "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg=="], + + "vscode-json-languageservice": ["vscode-json-languageservice@4.1.8", "", { "dependencies": { "jsonc-parser": "^3.0.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", "vscode-nls": "^5.0.0", "vscode-uri": "^3.0.2" } }, "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + + "vscode-nls": ["vscode-nls@5.2.0", "", {}, "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng=="], + + "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + + "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], + + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], + + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], + + "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], + + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + + "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + + "yaml-language-server": ["yaml-language-server@1.20.0", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "prettier": "^3.5.0", "request-light": "^0.5.7", "vscode-json-languageservice": "4.1.8", "vscode-languageserver": "^9.0.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", "vscode-uri": "^3.0.2", "yaml": "2.7.1" }, "bin": { "yaml-language-server": "bin/yaml-language-server" } }, "sha512-qhjK/bzSRZ6HtTvgeFvjNPJGWdZ0+x5NREV/9XZWFjIGezew2b4r5JPy66IfOhd5OA7KeFwk1JfmEbnTvev0cA=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], + + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + + "@astrojs/language-server/@astrojs/compiler": ["@astrojs/compiler@2.13.1", "", {}, "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg=="], + + "@astrojs/telemetry/ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], + + "@babel/core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/core/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/generator/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/generator/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/helpers/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/template/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/template/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/traverse/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/traverse/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@iconify/tools/svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], + + "@types/babel__core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@types/babel__core/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__generator/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__template/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@types/babel__template/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__traverse/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/sax/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + + "@types/yauzl/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "babel-plugin-jsx-dom-expressions/@babel/helper-module-imports": ["@babel/helper-module-imports@7.18.6", "", { "dependencies": { "@babel/types": "^7.18.6" } }, "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="], + + "babel-plugin-jsx-dom-expressions/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + + "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "hast-util-raw/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "mdast-util-definitions/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "mdast-util-to-hast/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "mdast-util-to-markdown/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "mlly/ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], + + "ofetch/ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], + + "postcss-nested/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "remark-smartypants/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "retext-smartypants/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "solid-refresh/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + + "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "tailwindcss/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "typescript-auto-import-cache/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "unist-util-remove-position/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "vite-plugin-solid/vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], + + "vscode-json-languageservice/jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], + + "yaml-language-server/request-light": ["request-light@0.5.8", "", {}, "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg=="], + + "yaml-language-server/yaml": ["yaml@2.7.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ=="], + + "yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "@iconify/tools/svgo/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "@iconify/tools/svgo/css-tree": ["css-tree@2.3.1", "", { "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" } }, "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="], + + "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], + + "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "@iconify/tools/svgo/css-tree/mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="], + + "tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..ac01752 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,39 @@ +{ + "name": "redi-dev", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "start": "astro preview", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro", + "format": "biome format --write .", + "lint": "biome lint .", + "lint:fix": "biome check --apply ." + }, + "devDependencies": { + "@astrojs/check": "0.9.8", + "@astrojs/tailwind": "^6.0.2", + "@biomejs/biome": "1.7.3", + "@tailwindcss/typography": "^0.5.13", + "astro": "6.0.8", + "tailwindcss": "^3.4.3", + "typescript": "^5.4.5" + }, + "packageManager": "bun@1.1.29", + "dependencies": { + "@astrojs/node": "10.0.3", + "@astrojs/sitemap": "3.7.1", + "@astrojs/solid-js": "6.0.1", + "@nanostores/solid": "^1.1.1", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/forms": "^0.5.11", + "astro-icon": "^1.1.5", + "nanostores": "^1.0.1", + "pocketbase": "^0.26.5", + "sharp": "^0.34.3", + "solid-icons": "^1.1.0", + "solid-js": "^1.9.9" + } +} diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg new file mode 100644 index 0000000..1a4cf80 --- /dev/null +++ b/frontend/public/favicon.svg @@ -0,0 +1,3 @@ + + -HTS- + \ No newline at end of file diff --git a/frontend/public/logo.avif b/frontend/public/logo.avif new file mode 100644 index 0000000..3e52597 Binary files /dev/null and b/frontend/public/logo.avif differ diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt new file mode 100644 index 0000000..14267e9 --- /dev/null +++ b/frontend/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / \ No newline at end of file diff --git a/frontend/src/assets/css/Post.css b/frontend/src/assets/css/Post.css new file mode 100644 index 0000000..2325214 --- /dev/null +++ b/frontend/src/assets/css/Post.css @@ -0,0 +1,127 @@ +article.prose h2 { + text-align: center !important; /* Center on mobile */ +} + +@media (min-width: 768px) { + /* md breakpoint */ + article.prose h2 { + text-align: left !important; /* Left-align on md and above */ + } +} + +.prose img { + border-radius: 30px; +} + +/* Styles for paragraph spacing on mobile */ +article.prose p { + margin-top: 1.5em !important; /* Increased top margin for paragraphs on mobile */ + margin-bottom: 1.5em !important; /* Increased bottom margin for paragraphs on mobile */ + font-size: 0.9em !important; /* Smaller font size for paragraphs on mobile */ +} + +@media (min-width: 768px) { + /* md breakpoint */ + article.prose p { + /* Reset or keep default prose spacing and font size for larger screens */ + margin-top: 1em !important; /* Adjust as needed, or remove !important if prose default is fine */ + margin-bottom: 1em !important; /* Adjust as needed, or remove !important if prose default is fine */ + font-size: 1em !important; /* Revert to default or desired font size for larger screens */ + } +} + +/* General text readability improvements for article content */ +article.prose p { + line-height: 1.75; /* Relaxed line height */ + margin-top: 1em; /* Default paragraph spacing */ + margin-bottom: 1em; +} + +article.prose ul, +article.prose ol { + margin-top: 1em; + margin-bottom: 1em; +} + +article.prose li { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +article.prose h1 { + margin-top: 3rem; /* Equivalent to spacing.12 */ + margin-bottom: 1.5rem; /* Equivalent to spacing.6 */ +} + +article.prose h2 { + margin-top: 2.5rem; /* Equivalent to spacing.10 */ + margin-bottom: 1.25rem; /* Equivalent to spacing.5 */ +} + +article.prose h3 { + margin-top: 2rem; /* Equivalent to spacing.8 */ + margin-bottom: 1rem; /* Equivalent to spacing.4 */ +} + +article.prose h4 { + margin-top: 1.5rem; /* Equivalent to spacing.6 */ + margin-bottom: 0.75rem; /* Equivalent to spacing.3 */ +} + +/* Code block styling */ +article.prose pre { + background-color: #1a202c; /* neutral-900 */ + border: 1px solid #2d3748; /* neutral-800 */ + border-radius: 0.5rem; /* lg */ + padding: 1rem; /* spacing.4 */ + overflow-x: auto; /* Enable horizontal scrolling for long lines */ +} + +article.prose code { + background-color: #2d3748; /* neutral-800 */ + padding: 0.2em 0.4em; + border-radius: 0.25rem; + font-size: 0.875em; /* Smaller font size for inline code */ +} + +/* Table styling */ +article.prose table { + width: 100%; + border-collapse: collapse; + margin-top: 1.5em; + margin-bottom: 1.5em; +} + +article.prose th, +article.prose td { + border: 1px solid #4a5568; /* neutral-600 */ + padding: 0.75em; + text-align: left; +} + +article.prose th { + background-color: #2d3748; /* neutral-800 */ + font-weight: bold; +} + +/* Link hover effect */ +article.prose a { + transition: color 0.2s ease-in-out, text-decoration-color 0.2s ease-in-out; +} + +article.prose a:hover { + color: #6366f1; /* indigo-500 */ + text-decoration-color: #6366f1; /* indigo-500 */ +} + +/* Blockquote styling */ +article.prose blockquote { + border-left: 4px solid #4f46e5; /* indigo-600 */ + padding-left: 1em; + margin-left: 0; + font-style: italic; + color: #a0aec0; /* neutral-400 */ + background-color: #1a202c; /* neutral-900 */ + padding: 1em; + border-radius: 0.5rem; +} \ No newline at end of file diff --git a/frontend/src/assets/css/global.css b/frontend/src/assets/css/global.css new file mode 100644 index 0000000..77ea156 --- /dev/null +++ b/frontend/src/assets/css/global.css @@ -0,0 +1,37 @@ +@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Noto+Sans:wght@400;500;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'); + + +@tailwind base; +@tailwind components; +@tailwind utilities; + + +/* Оборачиваем в @layer base, чтобы Tailwind корректно это обработал */ +@layer base { + body { + font-family: 'Noto Sans', sans-serif; + @apply bg-background-light dark:bg-background-dark text-[#181611] dark:text-white overflow-x-hidden; + } + + h1, h2, h3, h4, h5, h6, .font-display { + font-family: 'Space Grotesk', sans-serif; + } +} + +/* src/assets/css/global.css */ +.hamburger-line { + @apply h-[2px] w-8 bg-white transition-all duration-300 ease-in-out; +} + +/* Состояние когда меню открыто (.is-active) */ +.is-active .line-1 { + transform: translateY(10px) rotate(45deg); +} +.is-active .line-2 { + opacity: 0; + transform: translateX(-20px); +} +.is-active .line-3 { + transform: translateY(-10px) rotate(-45deg); +} \ No newline at end of file diff --git a/frontend/src/assets/images/hero/heroImg.avif b/frontend/src/assets/images/hero/heroImg.avif new file mode 100644 index 0000000..59d3bf5 Binary files /dev/null and b/frontend/src/assets/images/hero/heroImg.avif differ diff --git a/frontend/src/components/about/AboutHero.astro b/frontend/src/components/about/AboutHero.astro new file mode 100644 index 0000000..f7cc281 --- /dev/null +++ b/frontend/src/components/about/AboutHero.astro @@ -0,0 +1,300 @@ +--- +import PageHeading from '@components/base/PageHeading.astro' + +const skills = [ + "Astro", + "NextJS", + "SolidJS", + "Preact", + "React", + "SolidJS", + "TypeScript", + "Tailwind CSS" +] +--- + +
+ + + +
+ + +
+ +
+
+ RediBedi - Веб-разработчик +
+
+
+ + +
+
+
+
🚀
+
+
+ {Array.from({ length: 10 }).map((_, i) => ( +
+ ))} +
+
+

Доступен для проектов

+

Готов к новым вызовам и интересным проектам

+
+
+
+ + +
+
+

+ Jamstack-разработчик с 12+ годами опыта, специализируюсь на создании высоконагруженных веб-приложений. + Люблю работать с современным стеком технологий и решать сложные архитектурные задачи. + Постоянно изучаю новые подходы к разработке и делюсь знаниями с сообществом через технические статьи + и open-source проекты. Верю в силу сообщества и открытого кода. +

+
+
+
+ + +
+

+ Технологии которые я использую +

+
+ {skills.map((skill, index) => ( +
+ + {skill} + +
+ ))} +
+
+
+ + \ No newline at end of file diff --git a/frontend/src/components/about/ContactCTA.astro b/frontend/src/components/about/ContactCTA.astro new file mode 100644 index 0000000..c43ee76 --- /dev/null +++ b/frontend/src/components/about/ContactCTA.astro @@ -0,0 +1,69 @@ +--- +import { Icon } from 'astro-icon/components' +--- + +
+
+
+ +

+ Готовы начать проект? +

+ + +

+ Обсудим ваши идеи и создадим что-то amazing вместе. Я всегда на связи и готов помочь с реализацией вашего проекта. +

+ + + + + +
+

+ ⚡ Обычно отвечаю в течение 1-2 часов в рабочее время +

+
+
+
+
+ + \ No newline at end of file diff --git a/frontend/src/components/base/Breadcrumbs.astro b/frontend/src/components/base/Breadcrumbs.astro new file mode 100644 index 0000000..5679b94 --- /dev/null +++ b/frontend/src/components/base/Breadcrumbs.astro @@ -0,0 +1,31 @@ +--- +export interface Breadcrumb { + label: string; + url?: string; +} + +interface Props { + breadcrumbs: Breadcrumb[]; +} + +const { breadcrumbs }: Props = Astro.props; +--- + +
+
+ {breadcrumbs.map((crumb, index) => ( + + {crumb.url ? ( + + {crumb.label} + + ) : ( + {crumb.label} + )} + {index < breadcrumbs.length - 1 && ( + / + )} + + ))} +
+
\ No newline at end of file diff --git a/frontend/src/components/base/Button.astro b/frontend/src/components/base/Button.astro new file mode 100644 index 0000000..281a814 --- /dev/null +++ b/frontend/src/components/base/Button.astro @@ -0,0 +1,37 @@ +--- +interface Props { + href?: string; + variant?: 'primary' | 'outline' | 'dark'; + className?: string; // Доп. классы если нужны + [x: string]: any; // Остальные атрибуты (type, onclick и т.д.) +} + +const { href, variant = 'primary', className = '', ...rest } = Astro.props; + +// Определение HTML тега: если есть href, то , иначе + + + + \ No newline at end of file diff --git a/frontend/src/components/blog/FeaturedArticle.astro b/frontend/src/components/blog/FeaturedArticle.astro new file mode 100644 index 0000000..0c64f50 --- /dev/null +++ b/frontend/src/components/blog/FeaturedArticle.astro @@ -0,0 +1,28 @@ +--- +import BlogCard from './BlogCard.astro'; + +const featuredArticle = { + id: 1, + title: "Перевозка 50-тонной газовой турбины: Логистический вызов", + description: "Подробный разбор сложнейшего маршрута через три климатические зоны. Как мы справились с обледенением дорог и нестандартными габаритами груза в рекордные сроки.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuASzPedaqnQMuVwGkd-98Tg1bVR6_fhPq8RWFQ88vPqNKVBr7OPg_HlBl1Fi6P6o4zvIO4T2JjTMNAHIajVYA3VYErT3JW4vTydFNQTYpwN0Yqf_RauKV7YQ2prA3o1cGzoCda3y5VOtztyvim-7I8wH6APkcL07uhgJzjlqY55L838i1ZFQnEHOLgTzZam6Qlzm_zIqIAuv6lB1WY5D0CUoMiH_MtA7TDzGyeEp_wU6l4YhrZXyj4fWe56NPzb7iHcIWjgzOWGkqI", + category: "Кейс месяца", + date: "12 Окт 2023", + readTime: "5 мин", + type: "Кейс", + href: "/blog/1", + tags: ["Негабарит", "Турбина", "Зимняя перевозка", "Сложный маршрут"] +}; +--- + + +
+
+
+ +
+
+
diff --git a/frontend/src/components/blog/Filters.astro b/frontend/src/components/blog/Filters.astro new file mode 100644 index 0000000..9ffe778 --- /dev/null +++ b/frontend/src/components/blog/Filters.astro @@ -0,0 +1,26 @@ +--- +const categories = [ + { name: "Все материалы", active: true }, + { name: "Новости отрасли", active: false }, + { name: "Кейсы", active: false }, + { name: "Советы экспертов", active: false }, + { name: "Проектная логистика", active: false } +]; +--- + + +
+
+
+ {categories.map(category => ( + + ))} +
+
+
\ No newline at end of file diff --git a/frontend/src/components/blog/Pagination.astro b/frontend/src/components/blog/Pagination.astro new file mode 100644 index 0000000..9f665f9 --- /dev/null +++ b/frontend/src/components/blog/Pagination.astro @@ -0,0 +1,11 @@ + +
+
+
+ +
+
+
\ No newline at end of file diff --git a/frontend/src/components/cars/CTA.astro b/frontend/src/components/cars/CTA.astro new file mode 100644 index 0000000..13456bc --- /dev/null +++ b/frontend/src/components/cars/CTA.astro @@ -0,0 +1,24 @@ +--- +--- + + +
+
+
+
+

+ Нужна техника под проект? +

+

+ Мы подберем оптимальную конфигурацию автопоезда для вашего груза, рассчитаем нагрузку на оси и подготовим схему погрузки. +

+
+ + +
+
+
\ No newline at end of file diff --git a/frontend/src/components/cars/Hero.astro b/frontend/src/components/cars/Hero.astro new file mode 100644 index 0000000..c3a45db --- /dev/null +++ b/frontend/src/components/cars/Hero.astro @@ -0,0 +1,38 @@ +--- +--- + +
+
+
+
+
+
+ + + + + Собственный автопарк +
+

+ Мощность для
+ Сложнейших задач +

+

+ Специализированная техника мирового класса для решения нестандартных логистических задач. Надежность, подтвержденная годами эксплуатации в суровых условиях. +

+
+ + +
+
+
+ +
+
+
\ No newline at end of file diff --git a/frontend/src/components/cars/StatsSection.astro b/frontend/src/components/cars/StatsSection.astro new file mode 100644 index 0000000..1c442a6 --- /dev/null +++ b/frontend/src/components/cars/StatsSection.astro @@ -0,0 +1,26 @@ +--- +--- + + +
+
+
+
+ 50+ + Единиц техники +
+
+ 300т + Макс. грузоподъемность +
+
+ 100% + Страхование грузов +
+
+ EURO 6 + Экологический класс +
+
+
+
\ No newline at end of file diff --git a/frontend/src/components/cars/TrucksGrid.astro b/frontend/src/components/cars/TrucksGrid.astro new file mode 100644 index 0000000..5670990 --- /dev/null +++ b/frontend/src/components/cars/TrucksGrid.astro @@ -0,0 +1,155 @@ +--- +const trucks = [ + { + id: 1, + category: "Тягачи", + categoryColor: "primary", + title: "Volvo FH16 750", + subtitle: "Седельный тягач тяжелого класса", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAOaHRxL-iVeNx0_lb7j0y8TtfMpj0NNdiYeJJ2czCRUy8X_36_Jmd9Bc7Mm6BFI-gQqYb8LZjPSddEy4QYrn0hM5mJIdOmhjdI6irhh8XxIgoavYskuVcw8PCqFO8pQ4nkx2anLdRijpBU1uq8f69dpJulDJQjdHT-1GiFg804reWivl8J1N7f_efpITSRahIF4vhwmlYONcOM7ntb9AYP2ceiwOTA32lcd8YIpPmgI554tblSy1a9HuuPtxfOqnDsFLw0gd1TQfs", + specs: [ + { label: "Мощность", value: "750 л.с." }, + { label: "Кол. формула", value: "8x4 / 4" }, + { label: "Нагрузка ССУ", value: "35 тонн" }, + { label: "Полная масса", value: "до 325 т" } + ] + }, + { + id: 2, + category: "Тягачи", + categoryColor: "primary", + title: "Mercedes Actros SLT", + subtitle: "Балластный тягач", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuA9iwqEhWUwOzqAw9_gybpLjg00xOij9K_F_l9rzooWSj0bXPGSQJ4EzxoNYOG6IYlya3UIRzj6IqHM6flCU-VSlWk-IUqWKtBu1Aspbha9gqOIER1I29ezWrf3HsPpa5xUFB-nqD9P1LGK1c5LgPA-EwIU32KEzwgKnE8l-KKPmmXax1Ac32dToah6lP0wAyFnlvtXrmoGkouOfYfrHmPLTHg9hxJTrVbUaFTnhQ6h_Ka60KQh5L2zwL8KN1y5IqqCfi8djPPTcrQ", + specs: [ + { label: "Мощность", value: "625 л.с." }, + { label: "Кол. формула", value: "8x8" }, + { label: "Тяга", value: "Турбосцеп." }, + { label: "Автопоезд", value: "до 250 т" } + ] + }, + { + id: 3, + category: "Тралы", + categoryColor: "white", + title: "Goldhofer THP/SL", + subtitle: "Модульная система", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuB7zAoAh24UbH6tcFgydrKHdNM-bCAE7ud_IXTjAd_svLsrwYJCnBETygi4Nz6zVdtm1k32flW6BHjbWeLaodU8u0McTxcUIfQDK9HM35QZNV6WbDyR2t2qFwIP6evJHD1LpnT6H6A3WSJzoeiXtB8oiV-toD3WluHf1e4cAh1uCzDhUeNsVlB41Ti8GO8hdj_6ZTJ-nFf-Qmd23f4LgFZHGOf2IqkOzcEpXqHVo3omaeIHSiF9VCNIGhM5-Z1iYEZXCPyDUrjmh1U", + specs: [ + { label: "Нагрузка на ось", value: "45 т" }, + { label: "Конфигурация", value: "Модульная" }, + { label: "Высота", value: "1.175 мм" }, + { label: "Угол поворота", value: "+/- 55°" } + ] + }, + { + id: 4, + category: "Тралы", + categoryColor: "white", + title: "Faymonville TeleMAX", + subtitle: "Телескопический полуприцеп", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBWhtkTXHNaeyJkrvzGBGd1zwVODkwvo5tjfxrBILzIUYLWoeLwBPLz7OuOmlfP76JW0LgW2FY9YomMU3jZqtUH8tJMZ6lwE3lBatgiyouiSXdSh_9Hk051HAD07_-Mpg09oGvAKD66GfXaDKrPSu4POO38cZg22sKf74iZzZtQdKgqrZV30iJitb3hBIxNUYNqsEI0fYFuMh2zcGW9jZn28cgiVM5mwBOidl8q3MDklKwGhKxDip0TX96ZDKFGFaqYE18TK4JKrBM", + specs: [ + { label: "Длина", value: "до 65 м" }, + { label: "Оси", value: "3 - 10" }, + { label: "Подвеска", value: "Пневмо" }, + { label: "Назначение", value: "Лопасти" } + ] + }, + { + id: 5, + category: "Краны", + categoryColor: "text-muted", + title: "Liebherr LTM 1120", + subtitle: "Мобильный кран", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAZhlVFnMaIu7crqpY5UYDXD1mFuDN1Dd_6J-g1-o7V4h7h4PYgkaZf-yaD9jbFucgljTzW0VcSYYU0nkcYqsMFE-fdIHZhEenoxsexKdpEXhrzAOtxCcH3VJNpODMd6DqXtHRF6gi3b3drmU3OV4frVWS5c6O1557mEbHtpbM_A9pUjJtcESW9f2hWShjGjFC0m2YZRNBaJLo1L8CeherfHNZmiJleN7GAsqiAaRDUzuWrHR4fBfe-eJcQMOJKS97rE7UO5h1ZA7E", + specs: [ + { label: "Грузоподъем.", value: "120 т" }, + { label: "Стрела", value: "66 м" }, + { label: "Оси", value: "4" }, + { label: "Балласт", value: "31 т" } + ] + }, + { + id: 6, + category: "Сервис", + categoryColor: "text-muted", + title: "Пилотное Сопровождение", + subtitle: "Автомобили прикрытия", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAPJZjIY94FPbdEq1HPChotRqKB6SP5OnaJgJ7_db7qbR6auYteNIkeXZKuXxY142d0HwqbjksUWcp-CwZ_qEDBHaDNrQNdmMjfjFK4DLhIANZKs2gLLN55L0T3st64Vbt3cuTZMyrZE7D-BDkXXEmsxmeLrPHoPSlJoMFr7YSSBqwKWOrXAPwqZqR1nWMz1n0KGygSYdnJHijrEdVQjvFBlyS_yy6s6gUEDoPFLGDT2JL1QUKff9lQ7h4aZqx8qnt_1ho7ODOjkVo", + specs: [ + { label: "Оборудование", value: "Спецсигналы" }, + { label: "Связь", value: "Радио УКВ" }, + { label: "Экипаж", value: "2 пилота" }, + { label: "Измерители", value: "Высотомеры" } + ] + } +]; +--- + +
+
+ +
+
+

Категории Техники

+
+
+ +
+ + + + +
+
+ +
+ {trucks.map(truck => ( +
+
+
+ {truck.category} +
+
+ +
+
+
+
+
+

{truck.title}

+

{truck.subtitle}

+
+ arrow_outward +
+ +
+ {truck.specs.map(spec => ( +
+ {spec.label} + {spec.value} +
+ ))} +
+ +
+
+ ))} +
+
+
\ No newline at end of file diff --git a/frontend/src/components/contacts/ContactForm.astro b/frontend/src/components/contacts/ContactForm.astro new file mode 100644 index 0000000..9a89316 --- /dev/null +++ b/frontend/src/components/contacts/ContactForm.astro @@ -0,0 +1,64 @@ +--- +import Button from '@components/base/Button.astro'; +import type { FormRow, FormField } from '@globalInterfaces'; + +const formFields: FormRow[] = [ + [ + { label: "Ваше имя", placeholder: "Иван Иванов", type: "text", name: "name" }, + { label: "Компания", placeholder: "Название организации", type: "text", name: "company" } + ], + [ + { label: "Телефон", placeholder: "+7 (___) ___-__-__", type: "tel", name: "phone" }, + { label: "Email", placeholder: "mail@example.com", type: "email", name: "email" } + ] +]; +--- +
+
+

Обратная связь

+

Заполните форму, и наш менеджер свяжется с вами в течение 30 минут.

+
+ +
+ {formFields.map((row: FormRow) => ( +
+ {row.map((field: FormField) => ( +
+ + +
+ ))} +
+ ))} + +
+ + +
+ +
+
+ + check +
+ +
+ + + +
+
diff --git a/frontend/src/components/contacts/ContactHero.astro b/frontend/src/components/contacts/ContactHero.astro new file mode 100644 index 0000000..0a48107 --- /dev/null +++ b/frontend/src/components/contacts/ContactHero.astro @@ -0,0 +1,18 @@ +
+ +
+ +
+
+
+

Мы всегда на связь

+

+ Контакты +

+

+ Профессиональная логистика для ваших задач. Офис в Москве, работаем по всей России и СНГ. +

+
+
+
+
\ No newline at end of file diff --git a/frontend/src/components/contacts/ContactInfo.astro b/frontend/src/components/contacts/ContactInfo.astro new file mode 100644 index 0000000..1391160 --- /dev/null +++ b/frontend/src/components/contacts/ContactInfo.astro @@ -0,0 +1,40 @@ +--- +import { SITE } from '@constants/site'; +import type { ContactInfo } from '@globalInterfaces'; + +const contacts: readonly ContactInfo[] = SITE.CONTACTS.page; +--- +
+

Информация

+
+ {contacts.map((item) => ( +
+
+ {item.icon} +
+
+

{item.label}

+ + {('isHtml' in item && item.isHtml) ? ( +

+ ) : ('emails' in item && item.emails) ? ( + item.emails.map((email: string) => ( + + {email} + + )) + ) : ( + <> + {('value' in item) && ( + + {item.value} + + )} + {'subValue' in item && item.subValue &&

{item.subValue}

} + + )} +
+
+ ))} +
+
\ No newline at end of file diff --git a/frontend/src/components/contacts/ContactMap.astro b/frontend/src/components/contacts/ContactMap.astro new file mode 100644 index 0000000..1345f06 --- /dev/null +++ b/frontend/src/components/contacts/ContactMap.astro @@ -0,0 +1,23 @@ +
+ Карта проезда + + +
+
+
+ location_on +
+
+ Офис +
+
+ + + Открыть карту + open_in_new + +
\ No newline at end of file diff --git a/frontend/src/components/home/CallToAction.astro b/frontend/src/components/home/CallToAction.astro new file mode 100644 index 0000000..0c8bfaf --- /dev/null +++ b/frontend/src/components/home/CallToAction.astro @@ -0,0 +1,39 @@ +--- + import Button from '@components/base/Button.astro'; +--- + +
+ +
+ +
+
+
+
+

+ Готовы начать проект? +

+

+ Оставьте заявку на расчет стоимости перевозки вашего груза прямо сейчас. Наши инженеры подготовят коммерческое предложение в течение 2 часов. +

+
+ +
+ + + + + +
+
+
+
+
diff --git a/frontend/src/components/home/Hero.astro b/frontend/src/components/home/Hero.astro new file mode 100644 index 0000000..98a5ca2 --- /dev/null +++ b/frontend/src/components/home/Hero.astro @@ -0,0 +1,68 @@ +--- +import heroImage from '@assets/images/hero/heroImg.avif'; +import Button from '@components/base/Button.astro'; + +const truckList = [ + { model: "MAN TGX 6x4", width: "w-8" }, + { model: "VOLVO FH16", width: "w-4" }, + { model: "SCANIA R730", width: "w-4" }, +]; +--- + +
+
+ +
+ + +
+ + +
+ + Логистика проектных грузов +
+ + +

+ Негабаритные + перевозки
+ любой сложности +

+ + + +

+ Перевозка промышленного оборудования и спецтехники по всей России. + + Надежность. Точность. Масштаб. +

+ + +
+ + + +
+
+
+ + +
+ + + +
+
\ No newline at end of file diff --git a/frontend/src/components/home/Projects.astro b/frontend/src/components/home/Projects.astro new file mode 100644 index 0000000..f296412 --- /dev/null +++ b/frontend/src/components/home/Projects.astro @@ -0,0 +1,48 @@ +--- +const projects = [ + { + title: "Перевозка газовой турбины", + location: "Новый Уренгой — 120 тонн", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBFnYR6nvSIaun98fKMCUzNf2NAbXrvHR0iT1HTCU-V3KzLwyIoVngr3loAMRyk26Is-peou-H2856C6X28njF1iqa3WkcCkbE5zjyperulaDQPDhOVSpJJscW1QO8keTWUKvw0vkr1Rf4sgtXugoC3JqhcpWPZbEwftW43fUJGCK-HWoJNc3CCnLwvhKBTssFvUpsI2VWp7nWL0Uk9Pu7gr3GVs_d7HfIYCLj5dFiGpHPzJn0hwqI8jYpvaHPjh1xI44Wjw6dnwQ4", + span: true // Флаг для карточки на 2 колонки + }, + { + title: "Экскаватор Komatsu", + location: "Кемерово", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBM3jebRsft87-UGor5cDj-5XeQgHbD3Je6WA551uxU-eHh2vNW5F9adLRJ_0Y9-Cn09mLIXcGi8L7xHvlIENoRD9K0zV7V_7cgTevo8IKg2yX_91A1lVterPwFRTtx6zkrwhFJKblvsYeObMJb-y3eCKy1LdeBrBdhQJLduDDk1_Hm6YOPjQrUqfGhApLYXlitOuGfR_RWNUlCxKQLSppWTJ04QUDBefgbJqocaTeCvjspsXVVRepuUl2CaYnpVg-r9arNzxYSsbY", + span: false + }, + { + title: "Трубы большого диаметра", + location: "Омск", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAFXY9zlCrElJmxX97AMfD9B4XIumIYOAIQ2izDbagOpw7p5rEK9JhWdRNzhzeyEBjbMu3BKdXPlOR_AUv7Iz-QjdkaSYeDIl9GTbian3cKZ4-MNzLMHpq3eHWSWVNIZWEP8I_VnAg-1trD91_PqlKVgX4ggj6IHYztEjp2dIwbPmIYSG9kfWmTbPhcm6bRvjhBNTES9qpxao1PAs_ytyiiRqPw91E1VdYXhipdKhHnOAg_VMRGUU7IKNjXixCYjQ7GSEEMzQixlSM", + span: false + } +]; +--- + +
+
+
+
+ Наш опыт +

Реализованные проекты

+
+ +
+ {projects.map((project) => ( + // Условный класс для col-span +
+
+
+
+

{project.title}

+

{project.location}

+
+
+ ))} +
+
+
+
diff --git a/frontend/src/components/home/Services.astro b/frontend/src/components/home/Services.astro new file mode 100644 index 0000000..4690f31 --- /dev/null +++ b/frontend/src/components/home/Services.astro @@ -0,0 +1,62 @@ +--- +const services = [ + { + icon: "scale", + bgIcon: "balance", + title: "Тяжеловесные грузы", + desc: "Собственный парк специализированных модульных тралов для перевозки грузов весом до 500 тонн. Инженерный расчет нагрузок." + }, + { + icon: "straighten", + bgIcon: "straighten", + title: "Негабаритные размеры", + desc: "Разработка индивидуальных маршрутов для грузов, превышающих стандартные габариты. Сопровождение машинами прикрытия и ДПС." + }, + { + icon: "description", + bgIcon: "description", + title: "Документация", + desc: "Полное юридическое сопровождение. Оформление спецразрешений (КТГ) в Росавтодоре. Страхование грузов 'от всех рисков'." + } +]; +--- + +
+
+ +
+
+
+
+

+ Технологичность
и Точность +

+

+ Обеспечиваем полный цикл логистики для проектных грузов, от инженерного планирования маршрута до выгрузки на объекте. +

+
+ + Все услуги компании arrow_forward + +
+ +
+ {services.map(service => ( +
+
+ {service.bgIcon} +
+
+ {service.icon} +
+
+

{service.title}

+
+

{service.desc}

+
+
+ ))} +
+
+
+
diff --git a/frontend/src/components/layout/footer/Footer.astro b/frontend/src/components/layout/footer/Footer.astro new file mode 100644 index 0000000..5e312e5 --- /dev/null +++ b/frontend/src/components/layout/footer/Footer.astro @@ -0,0 +1,83 @@ +--- +import { SITE } from '@constants/site'; + +const currentYear = new Date().getFullYear(); + +const footerLinks = { + company: [ + { text: "Блог", href: "/blog" }, + { text: "Новости", href: "/news" }, + { text: "Вакансии", href: "#" }, + { text: "Инструкции", href: "/instructions" }, + ], + services: [ + { text: "Перевозка спецтехники", href: "#" }, + { text: "Промышленные переезды", href: "#" }, + { text: "Аренда тралов", href: "#" }, + { text: "Сопровождение грузов", href: "#" } + ] +}; +--- + \ No newline at end of file diff --git a/frontend/src/components/layout/header/Header.astro b/frontend/src/components/layout/header/Header.astro new file mode 100644 index 0000000..28b56ce --- /dev/null +++ b/frontend/src/components/layout/header/Header.astro @@ -0,0 +1,131 @@ +--- +import Button from '@components/base/Button.astro'; +import MobileMenu from './MobileMenu.astro'; + +const currentPath = Astro.url.pathname; +const cleanPath = currentPath.replace(/\/$/, "") || "/"; +const baseLinks = [ + { text: "Услуги", href: "/services" }, + { text: "Автопарк", href: "/cars" }, + { text: "Проекты", href: "/projects" }, + { text: "Контакты", href: "/contacts" }, +]; +const navLinks = cleanPath !== "/" ? [{ text: "Главная", href: "/" }, ...baseLinks] : baseLinks; +--- + +
+
+
+
+ + + +
+ local_shipping +
+
+

HIMTRANS

+ Service +
+
+ + + + + + +
+
+
+ + +
+ + + +
+ + \ No newline at end of file diff --git a/frontend/src/components/layout/header/MobileMenu.astro b/frontend/src/components/layout/header/MobileMenu.astro new file mode 100644 index 0000000..e15d5cd --- /dev/null +++ b/frontend/src/components/layout/header/MobileMenu.astro @@ -0,0 +1,61 @@ +--- +// src/components/layout/header/MobileMenu.astro +import Button from '@components/base/Button.astro'; +interface Props { + links: { text: string; href: string }[]; +} +const { links } = Astro.props; +--- + + + + + +
+ +
+
+
+ local_shipping +
+
+

KHIMTRANS

+ Service +
+
+
+ + +
+ +
+ + +
+
+
+ Круглосуточно: + + 8 (800) 555-35-35 + +
+ +
+
+
\ No newline at end of file diff --git a/frontend/src/components/news/FeaturedNews.astro b/frontend/src/components/news/FeaturedNews.astro new file mode 100644 index 0000000..8757f09 --- /dev/null +++ b/frontend/src/components/news/FeaturedNews.astro @@ -0,0 +1,43 @@ +--- +const featuredNews = { + title: "Успешная доставка негабаритного реактора на Омский НПЗ", + description: "Завершился один из самых сложных логистических проектов года. Транспортировка реактора весом 350 тонн потребовала использования специализированных модульных платформ и укрепления дорожного полотна на маршруте в 1200 км.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuC0EvD1oFw0HZxXNNa1-ZL_XmBpWduHjqCoPZl8WVO3-RDNVCyQSQSJFfvYWTepp_RUfXneYxgdU0DUjznZ-dW3QRXKbs1WWwA1krAERvxvWS-uaqRhVnwLBILm3JyYvNZROGE2OjqS7cn3LW6VsRnmSOQpcL9xFnh8X-Q9yYH4ZZ0TFoTGXvYKtKVG_FSFVi9IoGhLX3aFZMPqeYBP274LUHFgHQucvymzSf5O1iS6xNA-OzgeiGLGfLXKBeGH1fWLGXoisVG1uws", + category: "Важное", + date: "12 Октября 2023" +}; +--- + + +
+
+
+
+
+
+
+
+ {featuredNews.category} +
+
+
+
+ {featuredNews.date} +

+ {featuredNews.title} +

+

+ {featuredNews.description} +

+
+
+ +
+
+
+
+
+
+
\ No newline at end of file diff --git a/frontend/src/components/news/Filters.astro b/frontend/src/components/news/Filters.astro new file mode 100644 index 0000000..2d999ae --- /dev/null +++ b/frontend/src/components/news/Filters.astro @@ -0,0 +1,38 @@ +--- +const categories = [ + { name: "Все новости", active: true }, + { name: "Проекты", active: false }, + { name: "Корпоративные", active: false }, + { name: "События", active: false } +]; +--- + + +
+
+
+
+ {categories.map(category => ( + + ))} +
+
+ +
+ filter_list + Фильтр по категории +
+
+
+
+
\ No newline at end of file diff --git a/frontend/src/components/news/NewsCard.astro b/frontend/src/components/news/NewsCard.astro new file mode 100644 index 0000000..dd4cea0 --- /dev/null +++ b/frontend/src/components/news/NewsCard.astro @@ -0,0 +1,78 @@ +--- +export interface Props { + id: number; + title: string; + description: string; + image: string; + date: string; + tags?: string[]; + href?: string; +} + +const { + id, + title, + description, + image, + date, + tags = [], + href = "#" +} = Astro.props; +--- + +
+ +
+
+
+
+ + + {tags.length > 0 && ( +
+ {tags.slice(0, 2).map(tag => ( + + {tag} + + ))} + {tags.length > 2 && ( + + +{tags.length - 2} + + )} +
+ )} +
+ + +
+ +
+ calendar_today + {date} +
+ + +

+ {title} +

+ + +

+ {description} +

+ + + + Подробнее + arrow_forward + +
+
\ No newline at end of file diff --git a/frontend/src/components/news/NewsGrid.astro b/frontend/src/components/news/NewsGrid.astro new file mode 100644 index 0000000..545351e --- /dev/null +++ b/frontend/src/components/news/NewsGrid.astro @@ -0,0 +1,79 @@ +--- +import NewsCard from './NewsCard.astro'; + +const news = [ + { + id: 1, + title: "Расширение автопарка: новые тягачи для сверхтяжелых грузов", + description: "Компания пополнила свой парк десятью новыми тягачами Volvo 8x4, специально модифицированными для работы в условиях Крайнего Севера.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuDdz9UltPzp-PVnc1bnoYD4mKGJStD7bqLEFdHQ5G5SBUUUPV3dQ1RfnnHmGu63nLpD6sH4Zo9iu512XAUbP3M_694mzkKjGw9Sf6ukjkykjIq4wv_7E47PEnWlLFUx-XvvM8bSqirCb53H_nQnsvGRFYZ5uas-5Di0eRgagT-Jh9sW3VnHzV3bPrRc02MLdKrCCeqqRBLTW4EPR6hUE2Dy2xX3AL9YhT-MXUDTPATWhqclJqe56vw10BXnMdZONL2yHuvv_jYSjrk", + date: "28 Сентября 2023", + tags: ["Техника", "Инвестиции"], + href: "/news/1" + }, + { + id: 2, + title: "Финансовый отчет за III квартал: рост международных перевозок", + description: "Объем экспортных операций вырос на 20% по сравнению с аналогичным периодом прошлого года, несмотря на усложнение логистических цепочек.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBWQwpqVb4GQglISFsyFsPmwA6hEwedjDhup3DQdnIe2UeCunEQO_7WitLIIzRpSUbpSHyqMtbOx0zT274H_59VpvgVs-R6J4_pSnlet5gnEiXFmdgaUmbRdchQp0dMUosAeytGWUlkjB-M5HQht_dhJClmQ-jZ5UCdu3UbMlqYyIWCN-MxqkZJLS17Gu_yRIhOD1yr-PgbrP6xfmgR4u9zwHPnBbDTUDHuHL2uqI5cO9KzAXGYXLTM1FIlJlVYUFXq3TozA6_a2ho", + date: "15 Августа 2023", + tags: ["Финансы", "Экспорт"], + href: "/news/2" + }, + { + id: 3, + title: "ХимТрансСервис на выставке TransRussia 2024", + description: "Приглашаем партнеров и клиентов посетить наш стенд. Мы представим новые решения для мультимодальных перевозок негабаритных грузов.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAmv7fb2c0YscPrCcTb9AwbFbJQTwA2tWdFqKCGqTIByVt8WxeyKtg1NMU8dpVZsOy21G96-VAaUS9To9ucCRy4zVZMFRZiBVGFG19lRe26i58DA-dKc1AFTtUj76ATemGeoUh-D-fMNLtM8nom1s7WyjTCss48p96lGGYhP8Re2DImfxHrT2gL3Dy8JyfuKaVIz6gxDLF_I-S46NZKa8Rp9WOkJHE0J7r_nF6v4uUzc9xbjogmn2CBGHvI_Awci1wSKcxGUVHpeiI", + date: "20 Июля 2023", + tags: ["События", "Выставка"], + href: "/news/3" + }, + { + id: 4, + title: "Награда за безопасность труда 2023", + description: "Наша компания получила отраслевую награду \"Золотой шлем\" за внедрение передовых стандартов безопасности при погрузочно-разгрузочных работах.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuCNrqfzHL13CiJyE09t9q00eNPGxXzHZmkJOnAJwWb-ZGksjDhJa-pMKLIwdQajZ2H3znwO6Npv4mTCHW6y22Cjk5uGKqm5twaUEqY5516Fz8GDIonYvhf7JFLVSo62yNGjE214kPru2mIXLnWtNnDOYYu_38ISFo0rLXcAnj9OwVyh7pu0vReSDJjuZE7eeTdcsWk6GmDX-0exBgiHP_iEcD4Q0wUgWt6kisHrbhJbjPOaifncmkJ_L8GnZZv2Qqd4Usu2pzROdAg", + date: "05 Июля 2023", + tags: ["Награды", "Безопасность"], + href: "/news/4" + }, + { + id: 5, + title: "Открытие нового маршрута: Китай - Россия", + description: "Запущен регулярный сервис доставки сборных грузов через погранпереход Забайкальск. Сроки доставки сокращены на 4 дня.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuAwu8Rfx_hUIGFZWILnPxm8pF3pCHt_INv95Z-da1kb3w5zp2T3eIa3aQ3B7odhyhwA8tHFnG9xQQUdNHuYBxabyEHmPLOw4SeHiUA2j5Kn1Z7gm7-L5Qp14jM8kuNdWF7_Sf1H9_9HrPaYUgZQGMRAG_l1xMtVm5yxlyMC8qQtCCh_QQBI3aF7_kKQrwkzb4TuUNLFgCPZ2E78k581azflIyBZfzRLwuxfur5v60PRTFVEapaiHm_LXr0TcQskucSMSmg0Y-lh_ao", + date: "18 Июня 2023", + tags: ["Маршруты", "Международные"], + href: "/news/5" + }, + { + id: 6, + title: "Стратегическое партнерство с \"СибНефтьГаз\"", + description: "Подписан долгосрочный контракт на логистическое обслуживание новых месторождений в Восточной Сибири.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuCdmtBSwT2WN1VKpedinOOHzhmC9qYatDPXtXL6ReeWoZkdBaVdIYk5NQXi73-ves5cnRp2BepSGeAZmFRnsVbTw0NKpg-PLNTfIariKA0CI37zrewHRoLxnWunMA2Qvp1uwN7vXjnlYFFF1rdWhZ783BssxTFtMmRk3c1aq5dV8ntlYLpJnXVBdDfW8TXnO2SOXF-ZtOcygfRioQR2kc6APXP41_hx36QUwqCRc6cAC6vxW0MiEoUoXApjoxWtein_9uoZF-gBbG0", + date: "01 Июня 2023", + tags: ["Партнерство", "Контракты"], + href: "/news/6" + } +]; +--- + + +
+
+
+ {news.map(item => ( + + ))} +
+
+
\ No newline at end of file diff --git a/frontend/src/components/news/Pagination.astro b/frontend/src/components/news/Pagination.astro new file mode 100644 index 0000000..e0cbf6f --- /dev/null +++ b/frontend/src/components/news/Pagination.astro @@ -0,0 +1,10 @@ + +
+
+
+ +
+
+
\ No newline at end of file diff --git a/frontend/src/components/projects/CTA.astro b/frontend/src/components/projects/CTA.astro new file mode 100644 index 0000000..0e65560 --- /dev/null +++ b/frontend/src/components/projects/CTA.astro @@ -0,0 +1,15 @@ + +
+
+
+

+ Готовы к новому вызову? +

+

+ Свяжитесь с нами для расчета вашего проекта. Мы найдем решение для груза любой сложности и габаритов. +

+ +
+
\ No newline at end of file diff --git a/frontend/src/components/projects/Filters.astro b/frontend/src/components/projects/Filters.astro new file mode 100644 index 0000000..449c2ed --- /dev/null +++ b/frontend/src/components/projects/Filters.astro @@ -0,0 +1,20 @@ + +
+
+ + + + + +
+
\ No newline at end of file diff --git a/frontend/src/components/projects/Footer.astro b/frontend/src/components/projects/Footer.astro new file mode 100644 index 0000000..5a7f71a --- /dev/null +++ b/frontend/src/components/projects/Footer.astro @@ -0,0 +1,50 @@ +--- +--- + + + \ No newline at end of file diff --git a/frontend/src/components/projects/Header.astro b/frontend/src/components/projects/Header.astro new file mode 100644 index 0000000..d721928 --- /dev/null +++ b/frontend/src/components/projects/Header.astro @@ -0,0 +1,28 @@ +--- +--- + +
+
+
+
+ local_shipping +
+

HimTransService

+
+ + + +
+
\ No newline at end of file diff --git a/frontend/src/components/projects/Hero.astro b/frontend/src/components/projects/Hero.astro new file mode 100644 index 0000000..4842900 --- /dev/null +++ b/frontend/src/components/projects/Hero.astro @@ -0,0 +1,9 @@ + +
+

+ Выполненные
Проекты +

+

+ Портфолио сложных логистических решений по перевозке негабаритных и тяжеловесных грузов по России и странам СНГ. Мы берем на себя ответственность там, где другие видят препятствия. +

+
\ No newline at end of file diff --git a/frontend/src/components/projects/ProjectsGrid.astro b/frontend/src/components/projects/ProjectsGrid.astro new file mode 100644 index 0000000..9c2bfbe --- /dev/null +++ b/frontend/src/components/projects/ProjectsGrid.astro @@ -0,0 +1,134 @@ +--- +const projects = [ + { + id: 1, + title: "Транспортировка Газовой Турбины ГТЭ-160", + description: "Мультимодальная перевозка с использованием речной баржи и модульных тралов. Преодоление узких мостовых пролетов и сложного рельефа местности в условиях ограниченного времени.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBozMUtPuxjJYMGy5ICJT8MZCAjqNP0RZh_xBASkCgEg04xtao0Q54qqaCU4q7HfAVoleDiNHw-_YPf5bkjnypHf5l2QEF0s2xFJx4MS4dN2aePPqQ-hOroSNvXqYZy-BaReyMvNc6T0LENG5prp-IRyT2K4Ho4Srs6iPKyPQhGha1Qr1JFNrpmYylP2da7e5gyKhHESpVSCKfW-26I720gsBGKcYCVWrcSz3liH6PucT6AI5PgjYzNSYRBQGUpBP4CH5r1BBSMLy4", + category: "Энергетика", + date: "Октябрь 2023", + location: "Тобольск", + weight: "185 т", + distance: "2 400 км", + equipment: "Goldhofer 12 осей", + projectId: "HTS-23-089" + }, + { + id: 2, + title: "Перевозка Колонны Гидрокрекинга", + description: "Уникальная логистическая операция по доставке сверхгабаритного оборудования на НПЗ. Потребовалось временное перекрытие федеральной трассы и демонтаж линий электропередач.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuCTRLWft4h301qTy13uuD6dmeRXpbokNfgjKIFSXVw-eYj5laekOGh58WHFsv_SU0mNr8_DYKvTkv8HkFcd_Ydlm2_sZWhlqkdGWTDCMsKM--ZefNh0ZcLGMR_dsowOvENPEvirsorZqjJWCb2XO_hQknTPIzgnNk7gPIqy4VxlmU_vhpoNgXEvWW2KXSz-L4lkK1BWykz-8k4ABffLa1tnX-fWoc0HGVP2AVkkSrbL6MxnnuMcoTWw-hsxdKqOLGs9VHPvHd8YAlY", + category: "Нефтехимия", + date: "Август 2023", + location: "Омск", + weight: "320 т", + length: "54 м", + team: "18 чел.", + projectId: "HTS-23-042" + }, + { + id: 3, + title: "Перебазировка Парка Карьерной Техники", + description: "Срочная переброска 12 единиц тяжелой карьерной техники Liebherr и Komatsu в условиях вечной мерзлоты и отсутствия дорожной инфраструктуры.", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuDE-wSMoUDOW2HFa3kJnmz2FoLVcdQ4HpohPufXKNcsq2nzmdgKAblAxkNKgy9I1hPOkvHgScoF3LUSyk_NdViaDrykd5WhBrDZVACkF6CsJrj9VbyPflgoITK0j124AexNQ8pub-wLda-L4uX0_LXDMZ0A6-z4VinjJKq9ugnJz8Aalp1YXr_vFwhz1DVVrVULIDlbYAsYlOBEriPsqMT5Sb-kXtg6JL2K6pYYNVzNdD4baXHDbxBx4venjz3gZywCzRcFgdjFVZg", + category: "Строительство", + date: "Июнь 2023", + location: "Норильск", + totalWeight: "850 т", + units: "12 шт", + duration: "7 дней", + projectId: "HTS-23-021" + } +]; +--- + +
+ {projects.map(project => ( +
+ {/* Image Section */} +
+
+
+
+ {project.category} +
+
+ {/* Content Section */} +
+ {/* Project Info */} +
+
+ calendar_month {project.date} + | + location_on {project.location} +
+

+ {project.title} +

+

+ {project.description} +

+ {/* Tech Specs Grid */} +
+ {project.weight && ( +
+

Вес груза

+

{project.weight}

+
+ )} + {project.distance && ( +
+

Расстояние

+

{project.distance}

+
+ )} + {project.equipment && ( +
+

Техника

+

{project.equipment}

+
+ )} + {project.length && ( +
+

Длина

+

{project.length}

+
+ )} + {project.team && ( +
+

Команда

+

{project.team}

+
+ )} + {project.totalWeight && ( +
+

Общий вес

+

{project.totalWeight}

+
+ )} + {project.units && ( +
+

Единиц

+

{project.units}

+
+ )} + {project.duration && ( +
+

Срок

+

{project.duration}

+
+ )} +
+
+ {/* Action */} +
+ Project ID: #{project.projectId} + +
+
+
+ ))} +
\ No newline at end of file diff --git a/frontend/src/components/services/ServicesGrid.astro b/frontend/src/components/services/ServicesGrid.astro new file mode 100644 index 0000000..62bef55 --- /dev/null +++ b/frontend/src/components/services/ServicesGrid.astro @@ -0,0 +1,81 @@ +--- +// src/components/sections/ServicesGrid.astro +const services = [ + { + title: "Автоперевозки", + icon: "local_shipping", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuBMWUfDDchCKK_m3DBflFPF9-53SNEVnKJcX8DEXdhbsTFp70l1QHuF6-WGS0kxKktJCm8KrE4Ri4wLLDoZGCs7xmRVJRGflyciuxATksnQ2uzIjLwzkq5Ul5iwUevxqG48jU9YX52Hay-iW0MGEXb-SThjnvUxsH-j0HCwAP03PQ4BttK9h4JNYxFOkPDvxta9RNZkq8zlzLx5GLk61ba5PQTzjV0OBhiTOzKrEYqpKb0YRX74afUXWg6dx7YKt06jB2lC1R5iAl8", + description: "Транспортировка негабарита с использованием собственных низкорамных тралов и модульных прицепов.", + tags: ["Тралы до 120т", "Разрешения"], + isPrimary: true + }, + { + title: "Морской фрахт", + icon: "directions_boat", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuDyohaoIQE3MQBIIhgNna4rqcWQonPYg6aj6aK2cIL_BKlv7rtxrjJvEjeeVkSs8Mcl_nzELtqXe5vxrm-v71YRxhf7knhFjAHmCPV1yhvAZhYIXcJpG3sps_wDm2wI1ulXfKoEqHwRokovZhvft2jgQK9KauqBlkusn49l3uOLm2uR_oK5eGfdSs0o3kAlCpvWrJxePmqMLo4D0fvjt2z3Z2mEvXXzAt20oZ9zvw3VAyZGf3HsC_zvEkgDTcdebIium7lHuj0uRuM", + description: "Чартерные перевозки, внутрипортовое экспедирование и перевалка грузов в портах РФ и мира.", + tags: ["Break Bulk", "Портовые работы"] + }, + { + title: "Ж/Д Перевозки", + icon: "train", + image: "https://lh3.googleusercontent.com/aida-public/AB6AXuArlmfYvzJVHYmPWTtzWy1gv4nSdm9QYBFuDx3Y8USZ9VtwxnTPCoJqMh88jjo22akATh7mVtlF-i3nYF10-Qj-hYO-hwLgEXXziNzmUz14lRC7kNn8_X0GVIH5scP71ao0X7urnG2sgHyEERw3vDQDwRAk99ZDKy5UMO-Pkvno6Oq5zBKN0dwpxGnM1PrQeU6ZtCdtC1f0rDUoiudO5d4356-b17bt5eJu7vdo4MSShe9kwWaEztVadKgYidZWw62zZaBu4qtuVPM", + description: "Организация отправки грузов на транспортерах и платформах. Разработка схем крепления.", + tags: ["Схемы НТУ", "Транспортеры"] + } +]; + +const secondaryServices = [ + { title: "Проектная логистика", icon: "engineering", desc: "Управление сложными цепочками поставок под ключ." }, + { title: "Охрана и сопровождение", icon: "shield_person", desc: "Предоставление машин прикрытия (PILOT) и патрулей ГИБДД." }, + { title: "Таможенное оформление", icon: "description", desc: "Подготовка полного пакета документов для ВЭД." } +]; +--- + +
+
+
+ + + {services.map(item => ( +
+
+
+
+ {item.title} +
+
+
+ {item.icon} +
+

{item.title}

+

{item.description}

+
    + {item.tags.map(tag => ( +
  • {tag}
  • + ))} +
+ + Подробнее arrow_forward + +
+
+ ))} + + + {secondaryServices.map(item => ( +
+
+ {item.icon} +
+

{item.title}

+

{item.desc}

+ + Подробнее arrow_forward + +
+ ))} + +
+
+
diff --git a/frontend/src/components/services/ServicesHero.astro b/frontend/src/components/services/ServicesHero.astro new file mode 100644 index 0000000..d801e12 --- /dev/null +++ b/frontend/src/components/services/ServicesHero.astro @@ -0,0 +1,21 @@ +
+
+
+
+ + Специализация +
+

+ Project Cargo
+ Логистика +

+

+ Комплексные решения по перевозке негабаритных, тяжеловесных и проектных грузов. Мы берем на себя ответственность за самые сложные маршруты. +

+
+
+ + +
diff --git a/frontend/src/components/services/Stats.astro b/frontend/src/components/services/Stats.astro new file mode 100644 index 0000000..142847b --- /dev/null +++ b/frontend/src/components/services/Stats.astro @@ -0,0 +1,21 @@ +--- +// src/components/sections/Stats.astro +const stats = [ + { value: "15+", label: "Лет опыта" }, + { value: "2М+", label: "Тонн груза" }, + { value: "500+", label: "Проектов" }, + { value: "100%", label: "Страхование" }, +]; +--- +
+
+
+ {stats.map(s => ( +
+ {s.value} + {s.label} +
+ ))} +
+
+
diff --git a/frontend/src/constants/site.ts b/frontend/src/constants/site.ts new file mode 100644 index 0000000..a0a7eb1 --- /dev/null +++ b/frontend/src/constants/site.ts @@ -0,0 +1,64 @@ +export const SITE = { + // Основная информация о сайте + TITLE: "ХимТрансСервис", + DESCRIPTION: "ХимТрансСервис - надежные негабаритные грузоперевозки. Профессиональные услуги транспортировки по всей России и СНГ.", + TAGLINE: "Профессиональные негабаритные грузоперевозки по России и СНГ. Мы доставляем то, что другие не могут поднять.", + AUTHOR: "ХимТрансСервис", + + // Контактная информация + CONTACTS: { + footer: [ + { icon: "location_on", text: "г. Самара, ул. Товарная 70" }, + { icon: "call", text: "+79109245151" }, + { icon: "mail", text: "htsbuch63@yandex.ru" } + ], + page: [ + { + label: "Адрес офиса", + icon: "location_on", + value: "г. Самара, ул. Товарная 70", + isHtml: false + }, + { + label: "Телефон", + icon: "call", + value: "+79109245151", + subValue: "Пн-Пт: 09:00 - 18:00", + link: "tel:+79109245151" + }, + { + label: "Email", + icon: "mail", + emails: ["htsbuch63@yandex.ru"] + } + ] + } as const, + + // URL сайта + URL: "https://hts.ru", + + // Основные страницы + PAGES: { + HOME: "https://hts.ru", + SERVICES: "https://hts.ru/services", + ABOUT: "https://hts.ru/about", + PROJECTS: "https://hts.ru/projects", + CONTACT: "https://hts.ru/contacts", + CARS: "https://hts.ru/cars", + BLOG: "https://hts.ru/blog", + NEWS: "https://hts.ru/news", + ERROR_404: "https://hts.ru/404", + }, + + // Описания для основных страниц + PAGE_DESCRIPTIONS: { + HOME: "ХимТрансСервис - надежные негабаритные грузоперевозки. Профессиональные услуги транспортировки по всей России и СНГ.", + SERVICES: "Узнайте о наших услугах по транспортировке негабаритных грузов. ХимТрансСервис предоставляет профессиональные услуги грузоперевозок по всей России и СНГ.", + ABOUT: "Узнайте больше о компании ХимТрансСервис - надежном партнере в сфере грузоперевозок.", + CONTACT: "Свяжитесь с нами для получения дополнительной информации о наших услугах.", + PROJECTS: "Наши реализованные проекты по негабаритным перевозкам. Узнайте о наших успешных проектах в сфере грузоперевозок.", + CARS: "Узнайте о нашем автопарке ХимТрансСервис. Современные грузовики для перевозки любых грузов.", + BLOG: "Читайте последние новости и статьи от ХимТрансСервис. Полезная информация о грузоперевозках, логистике и индустрии.", + NEWS: "Последние обновления, события и объявления от ХимТрансСервис. Читайте новости компании и отрасли.", + } +} as const; \ No newline at end of file diff --git a/frontend/src/content.config.js b/frontend/src/content.config.js new file mode 100644 index 0000000..4824897 --- /dev/null +++ b/frontend/src/content.config.js @@ -0,0 +1,21 @@ +import { defineCollection, z } from "astro:content"; +import { glob } from "astro/loaders"; + +const postCollection = defineCollection({ + loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/post" }), + schema: z.object({ + title: z.string(), + description: z.string(), + publishDate: z.string(), + coverImage: z.object({ + src: z.string(), + alt: z.string(), + }), + author: z.string(), + tags: z.array(z.string()).max(3, { message: "Допускается не более 3 тегов" }).optional(), + }), +}); + +export const collections = { + post: postCollection, +}; diff --git a/frontend/src/content/post/astro-5-main-advantages.md b/frontend/src/content/post/astro-5-main-advantages.md new file mode 100644 index 0000000..a7a33a4 --- /dev/null +++ b/frontend/src/content/post/astro-5-main-advantages.md @@ -0,0 +1,56 @@ +--- +title: "5 главных преимуществ фреймворка Astro" +description: "Узнайте о ключевых преимуществах Astro, которые делают его идеальным выбором для современных веб-проектов." +publishDate: "2025-08-25" +author: "Sergey" +tags: ["Astro", "Производительность", "Веб-разработка"] +coverImage: + src: "/images/posts/2025/08/astro-adv.avif" + alt: "Абстрактный код на холсте" +--- + +## Введение + +В мире постоянно развивающихся веб-технологий выбор правильного фреймворка имеет решающее значение для успеха проекта. + +Astro — это относительно новый, но быстро набирающий популярность статический генератор сайтов, который предлагает уникальный подход к созданию быстрых, SEO-оптимизированных и гибких веб-приложений. В этой статье мы рассмотрим пять ключевых преимуществ Astro, которые выделяют его среди конкурентов и делают отличным выбором для современных разработчиков. + +## 1. Островная архитектура для максимальной производительности + +Astro использует революционную “островную” архитектуру (Islands Architecture), которая является его визитной карточкой. Этот подход кардинально отличается от традиционных SPA-фреймворков, которые обычно отправляют на клиентскую сторону большой объем JavaScript. + +Вместо этого Astro по умолчанию генерирует чистый HTML и CSS. Интерактивные компоненты, которые мы называем “островами”, гидрируются (становятся интерактивными) только тогда, когда это действительно необходимо, и только в тех конкретных местах страницы, где они расположены. + +Такой подход минимизирует объем JavaScript, загружаемого браузером. Результатом является молниеносная загрузка страниц, значительное улучшение показателей Core Web Vitals (такие как LCP, FID, CLS) и обеспечение превосходного пользовательского опыта, особенно на мобильных устройствах и при медленном соединении. + +## 2. Гибкость и независимость от UI-фреймворков + +Одним из самых мощных преимуществ Astro является его агностицизм по отношению к UI-фреймворкам. Вы не привязаны к React, Vue, Svelte или любому другому фреймворку. Astro позволяет использовать компоненты, написанные на React, Vue, Svelte, Solid, Lit, Preact или даже чистом HTML/CSS/JavaScript, в одном проекте. + +Это дает разработчикам беспрецедентную свободу выбора и позволяет использовать лучшие инструменты для каждой конкретной задачи. Например, вы можете использовать React для сложных интерактивных виджетов, а Svelte для более простых компонентов, при этом основная часть страницы будет статическим HTML. Это также упрощает постепенную миграцию существующих проектов, позволяя интегрировать Astro без полного переписывания кодовой базы. + +## 3. Отличная SEO-оптимизация из коробки + +Поскольку Astro по умолчанию генерирует статический HTML, он обеспечивает превосходную индексацию поисковыми системами. Весь контент доступен краулерам сразу, без необходимости выполнения JavaScript на стороне клиента для рендеринга содержимого. + +Это критически важно для блогов, маркетинговых сайтов, новостных порталов и любых проектов, где SEO играет ключевую роль в привлечении трафика. Быстрая загрузка страниц и чистый HTML также положительно влияют на ранжирование в поисковых системах, что делает Astro идеальным выбором для контент-ориентированных веб-сайтов. + +## 4. Простота разработки и отличный DX (Developer Experience) + +Astro разработан с учетом удобства разработчиков и предлагает отличный DX. Он предоставляет интуитивно понятный синтаксис, который легко освоить, особенно если вы уже знакомы с HTML, CSS и JavaScript. + +Встроенная поддержка TypeScript, быстрая перезагрузка в режиме разработки (Hot Module Replacement) и мощная, но простая в использовании система плагинов значительно ускоряют процесс разработки. Astro минимизирует время на настройку и отладку, позволяя разработчикам сосредоточиться на создании функциональности, а не на борьбе с конфигурацией. + +Это делает его привлекательным как для новичков, так и для опытных команд. + +## 5. Встроенная поддержка Markdown и MDX + +Для контент-ориентированных сайтов, таких как блоги, документация или портфолио, Astro предлагает первоклассную встроенную поддержку Markdown и MDX (Markdown с JSX). Это значительно упрощает создание и управление контентом. + +Вы можете писать статьи в привычном формате Markdown, а при необходимости легко встраивать интерактивные компоненты React, Vue или Svelte прямо в ваши статьи с помощью MDX. Это позволяет создавать динамичный и интерактивный контент без необходимости использования сложных CMS или дополнительных инструментов, делая процесс публикации быстрым и эффективным. + +## Заключение + +В заключение, Astro представляет собой мощный и гибкий фреймворк, который идеально подходит для создания высокопроизводительных, SEO-оптимизированных и современных веб-сайтов. + +Его уникальная архитектура, агностицизм к UI-фреймворкам, отличная поддержка SEO, удобство для разработчиков и встроенная поддержка Markdown/MDX делают его привлекательным выбором для широкого круга проектов. Если вы ищете способ создавать быстрые и эффективные веб-приложения, Astro определенно заслуживает вашего внимания. diff --git a/frontend/src/content/post/astro-payload-cms-ideal-choice.md b/frontend/src/content/post/astro-payload-cms-ideal-choice.md new file mode 100644 index 0000000..df5e67b --- /dev/null +++ b/frontend/src/content/post/astro-payload-cms-ideal-choice.md @@ -0,0 +1,64 @@ +--- +title: "Astro и Payload CMS: идеальный выбор для контентных сайтов" +description: "Узнайте, почему сочетание сверхбыстрого фронтенд-фреймворка Astro и гибкой headless CMS Payload создает идеальную платформу для современных сайтов." +publishDate: "2025-08-25" +author: "Sergey" +tags: ["Astro", "Payload CMS", "Headless CMS"] +coverImage: + src: "/images/posts/2025/08/astro-payloadcms.avif" + alt: "Схема, показывающая связь между системами" +--- + +## Введение + +В современной веб-разработке выбор правильного стека технологий определяет не только скорость и функциональность сайта, но и удобство работы для разработчиков и контент-менеджеров. Когда речь заходит о создании контент-ориентированных сайтов — блогов, новостных порталов, портфолио или корпоративных сайтов — на первый план выходят два ключевых требования: высочайшая производительность и гибкость в управлении контентом. Именно здесь связка **Astro** и **Payload CMS** проявляет себя как идеальное решение. + +## Что такое Astro? + +**Astro** — это современный веб-фреймворк, созданный для построения сверхбыстрых сайтов. Его ключевая особенность — **архитектура островов (Islands Architecture)**. Astro рендерит весь сайт в статический HTML на сервере во время сборки, отправляя в браузер ноль JavaScript по умолчанию. Интерактивные элементы (UI-компоненты) загружаются как изолированные "острова", что позволяет достичь почти идеальных показателей в Google PageSpeed Insights без лишних усилий. + +## Что такое Payload CMS? + +**Payload CMS** — это headless CMS нового поколения, написанная на TypeScript. В отличие от традиционных CMS, Payload предоставляет контент через API, что дает разработчикам полную свободу в выборе фронтенд-технологий. + +Ключевые преимущества Payload: +- **Гибкость:** Вы можете определить любую структуру контента с помощью мощной системы полей. +- **Developer-first:** CMS настраивается кодом, что позволяет легко версионировать конфигурацию и интегрировать ее в любой CI/CD процесс. +- **Расширяемость:** Payload построена на Express.js, что позволяет легко добавлять кастомные эндпоинты и логику. +- **Современный UI:** Административная панель построена на React, она быстрая, интуитивно понятная и легко кастомизируется. + +## Идеальное сочетание: почему они так хорошо работают вместе? + +Когда вы объединяете Astro и Payload, вы получаете лучшее из двух миров. + +### 1. Непревзойденная производительность + +Astro генерирует статичные страницы, которые загружаются мгновенно. Данные для этих страниц он получает из Payload CMS во время сборки. Пользователь получает готовый HTML, а поисковые роботы — идеально оптимизированный для индексации сайт. + +### 2. Гибкость и контроль над контентом + +Payload позволяет создать именно ту структуру данных, которая нужна вашему проекту. Больше не нужно подстраиваться под ограничения CMS. Вы можете создавать сложные связи между коллекциями, глобальные блоки контента (например, для хедера и футера) и многое другое. Astro легко "подхватывает" эти данные через API. + +### 3. Превосходный опыт для разработчиков (Developer Experience) + +- **Astro** позволяет использовать компоненты на любом популярном фреймворке (React, Vue, Svelte), если это необходимо для интерактивности. +- **Payload** настраивается кодом, что близко и понятно любому разработчику. +- Получение данных в Astro из Payload — это простой `fetch`-запрос к API. + +Пример получения постов в Astro: + +```typescript +import type { Post } from '../types'; + +const response = await fetch(`${import.meta.env.PAYLOAD_API_URL}/api/posts`); +const data = await response.json(); +const posts: Post[] = data.docs; +``` + +### 4. Масштабируемость и готовность к будущему + +Декаплированная (decoupled) архитектура, где фронтенд и бэкенд полностью независимы, — это современный стандарт. Вы можете изменять и обновлять фронтенд на Astro, не затрагивая CMS. И наоборот, развивать бэкенд, не боясь сломать отображение. + +## Заключение + +Связка **Astro + Payload CMS** — это мощный, современный и гибкий стек для создания контентных сайтов. Astro обеспечивает высочайшую скорость загрузки и превосходное SEO, а Payload CMS дает полный контроль над контентом и непревзойденное удобство для разработчиков. Если вы хотите создать сайт, который будет радовать и пользователей, и вашу команду разработки, обязательно присмотритесь к этой комбинации. diff --git a/frontend/src/content/post/astro-payload-cms-step-by-step-guide.md b/frontend/src/content/post/astro-payload-cms-step-by-step-guide.md new file mode 100644 index 0000000..566476f --- /dev/null +++ b/frontend/src/content/post/astro-payload-cms-step-by-step-guide.md @@ -0,0 +1,181 @@ +--- +title: "Astro + Payload CMS: Создаем молниеносный сайт с нуля. Пошаговое руководство" +description: "Пошаговое руководство по созданию сверхбыстрого блога с использованием Astro для фронтенда и Payload CMS для управления контентом." +publishDate: "2025-08-25" +author: "Sergey" +tags: ["Astro", "Payload CMS", "Интеграция"] +coverImage: + src: "/images/posts/2025/08/astro_payload_guide.avif" + alt: "Рабочее место разработчика со старинным компьютером" +--- + +## Введение + +Создание современного сайта требует скорости, гибкости и удобного управления контентом. В этом руководстве мы с нуля создадим простой, но очень быстрый блог, используя две мощные технологии: **Astro** для фронтенда и **Payload CMS** в качестве headless CMS. Это пошаговое руководство проведет вас через все этапы: от инициализации проектов до вывода постов из CMS на страницах сайта. + +### Предварительные требования + +Перед началом убедитесь, что на вашем компьютере установлен **Node.js** (версии 18 или выше) и пакетный менеджер, например, **pnpm** или **npm**. + +--- + +## Шаг 1: Настройка Payload CMS + +Сначала настроим бэкенд — нашу систему управления контентом. + +1. **Создайте проект Payload.** + Откройте терминал и выполните команду: + ```bash + npx create-payload-app my-blog-backend + ``` + В процессе установки выберите `TypeScript` и шаблон `Blank` (пустой). + +2. **Определите коллекцию постов.** + Payload управляет контентом через "коллекции". Создадим коллекцию для наших постов. Создайте файл `src/collections/Posts.ts` и добавьте в него следующий код: + + ```typescript + import { CollectionConfig } from 'payload/types'; + + const Posts: CollectionConfig = { + slug: 'posts', + admin: { + useAsTitle: 'title', + }, + fields: [ + { + name: 'title', + type: 'text', + required: true, + }, + { + name: 'slug', + type: 'text', + required: true, + unique: true, + }, + { + name: 'content', + type: 'richText', + }, + ], + }; + + export default Posts; + ``` + +3. **Подключите коллекцию в конфигурации Payload.** + Откройте файл `src/payload.config.ts` и добавьте вашу новую коллекцию в массив `collections`: + + ```typescript + import { buildConfig } from 'payload/config'; + import Posts from './collections/Posts'; + import Users from './collections/Users'; + + export default buildConfig({ + // ... остальная конфигурация + collections: [ + Users, + Posts, // <-- Добавляем нашу коллекцию сюда + ], + // ... + }); + ``` + +4. **Запустите Payload.** + Перейдите в директорию проекта (`cd my-blog-backend`) и запустите сервер разработки: + ```bash + pnpm dev + ``` + При первом запуске Payload предложит создать администратора. После этого вы сможете зайти в админ-панель по адресу `http://localhost:3000/admin` и создать свой первый пост. Не забудьте заполнить все поля, включая `slug`. + +--- + +## Шаг 2: Настройка Astro + +Теперь займемся фронтендом. + +1. **Создайте проект Astro.** + Откройте новый терминал и выполните команду: + ```bash + pnpm create astro@latest my-blog-frontend + ``` + Выберите шаблон `Empty` (пустой) и `TypeScript` (`Strict`). + +2. **Базовая структура.** + Astro уже создал для вас базовую структуру. Основные файлы, с которыми мы будем работать, находятся в `src/pages/`. + +--- + +## Шаг 3: Соединяем Astro и Payload + +Магия происходит здесь. Мы будем запрашивать данные из API нашего Payload CMS во время сборки сайта Astro. + +1. **Создаем страницу для вывода всех постов.** + Создайте файл `src/pages/blog/index.astro`. Этот файл будет запрашивать список всех постов и отображать их. + + ```astro + --- + import Layout from '../../layouts/Layout.astro'; + + // Запрос к API Payload для получения всех постов + const response = await fetch('http://localhost:3000/api/posts'); + const data = await response.json(); + const posts = data.docs; + --- + +

Все посты

+ +
+ ``` + +2. **Создаем динамическую страницу для одного поста.** + Astro позволяет создавать динамические маршруты. Создайте файл `src/pages/blog/[slug].astro`. Он будет генерировать отдельную страницу для каждого поста. + + ```astro + --- + import Layout from '../../layouts/Layout.astro'; + + export async function getStaticPaths() { + const response = await fetch('http://localhost:3000/api/posts'); + const data = await response.json(); + const posts = data.docs; + + return posts.map(post => ({ + params: { slug: post.slug }, + props: { post }, + })); + } + + const { post } = Astro.props; + --- + +

{post.title}

+
+ + +
{JSON.stringify(post.content, null, 2)}
+
+
+ ``` + +## Шаг 4: Запуск и проверка + +Перейдите в директорию фронтенда (`cd my-blog-frontend`) и запустите сервер разработки Astro: + +```bash +pnpm dev +``` + +Теперь откройте `http://localhost:4321/blog` в вашем браузере. Вы должны увидеть список постов, которые вы создали в Payload. Кликнув по ссылке, вы перейдете на страницу конкретного поста. + +## Заключение + +Поздравляем! Вы только что создали основу для молниеносного сайта с разделенными фронтендом и бэкендом. Вы использовали Payload CMS для удобного управления контентом и Astro для его максимально быстрой доставки пользователю. + +Это только начало. Теперь вы можете добавлять стили с помощью Tailwind CSS, усложнять структуру контента в Payload и расширять функциональность вашего Astro-сайта. diff --git a/frontend/src/content/post/payload-vs-strapi-vs-contentful-for-astro.md b/frontend/src/content/post/payload-vs-strapi-vs-contentful-for-astro.md new file mode 100644 index 0000000..fde23b9 --- /dev/null +++ b/frontend/src/content/post/payload-vs-strapi-vs-contentful-for-astro.md @@ -0,0 +1,64 @@ +--- +title: "Payload CMS для Astro: Почему это может быть лучше, чем Strapi или Contentful" +description: "Сравнительный анализ Payload CMS, Strapi и Contentful. Узнайте, почему Payload может стать лучшим выбором для вашего следующего проекта на Astro." +publishDate: "2025-08-28" +author: "Sergey" +tags: ["Headless CMS", "Astro", "Сравнение"] +coverImage: + src: "/images/posts/2025/08/pour-over.avif" + alt: "Сравнение Payload cms, Contentful cms, Strapi cms" +--- + +## Введение + +Выбор Headless CMS — одно из самых важных архитектурных решений при создании сайта на Astro. Правильная CMS не только упрощает управление контентом, но и значительно влияет на опыт разработки и конечную производительность. На рынке доминируют такие гиганты, как Strapi и Contentful, но все большую популярность набирает **Payload CMS**, и на то есть веские причины. + +В этой статье мы сравним эти три системы и разберемся, почему Payload CMS часто оказывается наиболее подходящим выбором для проектов на Astro. + +## Критерий 1: Подход к конфигурации (Код против GUI) + +Это фундаментальное различие между системами. + +- **Payload CMS:** Придерживается подхода **config-as-code (конфигурация как код)**. Вся структура данных, поля, связи и даже права доступа описываются в TypeScript. Это означает, что вся конфигурация вашей CMS находится в Git, ее легко версионировать, переносить и воспроизводить. Для разработчика это огромный плюс. + +- **Strapi:** Использует **GUI-first подход**. Вы создаете типы контента (Content Types) через веб-интерфейс. Это может быть удобно для быстрого старта, но создает проблемы с синхронизацией конфигурации между разными окружениями (dev, staging, production) и усложняет версионирование. + +- **Contentful:** Работает по модели **API-first**, но конфигурация также происходит в веб-интерфейсе. Это удобно в рамках SaaS-платформы, но дает меньше контроля и прозрачности. + +**Вердикт для Astro:** Экосистема Astro ориентирована на разработчиков, которые ценят контроль и работу с кодом. Подход Payload `config-as-code` идеально вписывается в эту философию, делая разработку предсказуемой и надежной. + +## Критерий 2: Гибкость и расширяемость + +- **Payload CMS:** Максимальная гибкость. Payload — это, по сути, надстройка над фреймворком Express.js. Вы можете легко добавить собственные API эндпоинты, написать сложную бизнес-логику или интегрироваться с любыми сторонними сервисами на уровне кода. + +- **Strapi:** Хорошая расширяемость через систему плагинов и внутреннюю архитектуру. Однако для глубокой кастомизации часто требуется досконально изучить внутреннее API Strapi, что может быть сложнее, чем работа с Express в Payload. + +- **Contentful:** Наименее гибкий вариант. Вы ограничены возможностями, которые предоставляет платформа. Расширение функциональности возможно через UI Extensions и внешние приложения, но это не дает такого же уровня контроля, как self-hosted решения. + +**Вердикт для Astro:** Если вашему проекту может потребоваться нестандартная логика, Payload предоставляет практически безграничные возможности без "костылей". + +## Критерий 3: Хостинг и стоимость + +- **Payload CMS:** Полностью **self-hosted**. Вы можете разместить его где угодно: на Vercel, Render, AWS или собственном сервере. Вы платите только за ресурсы хостинга, а все функции Payload доступны бесплатно и без ограничений. Это самый экономичный вариант. + +- **Strapi:** Также **self-hosted**, но предлагает и платный облачный сервис Strapi Cloud, где стоимость зависит от тарифного плана. + +- **Contentful:** Это **SaaS (Software as a Service)**. Вы не заботитесь о хостинге, но платите за использование. Цены могут быстро вырасти при увеличении количества пользователей, записей или трафика, а многие продвинутые функции доступны только в дорогих тарифах. + +**Вердикт для Astro:** Для большинства проектов на Astro (блоги, портфолио, корпоративные сайты) модель Payload является самой выгодной, так как позволяет избежать высоких ежемесячных платежей и не ограничивает функциональность. + +## Сравнительная таблица + +| Критерий | Payload CMS | Strapi | Contentful | +|:---|:---|:---|:---| +| **Конфигурация** | Код (TypeScript) | GUI | GUI | +| **Гибкость** | Очень высокая (Express.js) | Высокая (плагины) | Ограниченная | +| **Хостинг** | Self-hosted | Self-hosted / Платное облако | SaaS (платная подписка) | +| **Версионирование** | Идеально (Git) | Сложно | Через UI/API | +| **Лучше всего для** | Проектов, где важен контроль, гибкость и версионирование | Быстрого старта с GUI и готовых плагинов | Корпоративных клиентов, готовых платить за поддержку и SaaS | + +## Заключение + +Strapi и Contentful — это мощные и зрелые платформы, которые отлично подходят для многих задач. Однако для разработчика на Astro, который ценит скорость, контроль над кодом и экономическую эффективность, **Payload CMS часто оказывается лучшим выбором**. + +Его `config-as-code` подход, непревзойденная гибкость и отсутствие скрытых платежей делают его идеальным партнером для создания молниеносных и легко поддерживаемых сайтов в экосистеме Astro. diff --git a/frontend/src/content/post/sozdaem-molnienosnyy-blog-na-astro-i-mdx.md b/frontend/src/content/post/sozdaem-molnienosnyy-blog-na-astro-i-mdx.md new file mode 100644 index 0000000..4dd6a69 --- /dev/null +++ b/frontend/src/content/post/sozdaem-molnienosnyy-blog-na-astro-i-mdx.md @@ -0,0 +1,102 @@ +--- +title: "Создаем молниеносный блог с нуля на Astro и MDX" +description: "Пошаговое руководство по созданию высокопроизводительного блога с использованием Astro и MDX для быстрого рендеринга и удобного управления контентом." +publishDate: "2025-08-26" +author: "Sergey" +tags: ["Astro", "MDX", "Блог"] +coverImage: + src: "/images/posts/2025/08/astro-blog.avif" + alt: "Иллюстрация блога на Astro" +--- + +## Введение + +В современном мире скорость загрузки сайта и удобство управления контентом играют ключевую роль. Astro, с его уникальной архитектурой "островов", и MDX, позволяющий писать JSX прямо в Markdown, представляют собой идеальное сочетание для создания молниеносных и функциональных блогов. В этом руководстве мы пройдем путь от установки Astro до публикации вашего первого поста, используя все преимущества этих технологий. + +## 1. Настройка проекта Astro + +Начнем с инициализации нового проекта Astro. Убедитесь, что у вас установлен Node.js (рекомендуется LTS-версия). + +Для создания нового проекта Astro выполните следующую команду в терминале: + +```bash +pnpm create astro@latest +``` + +Следуйте инструкциям в консоли. Выберите шаблон "Blog" для быстрого старта. После установки перейдите в директорию проекта: + +```bash +cd my-astro-blog +pnpm install +``` + +Теперь вы можете запустить локальный сервер разработки: + +```bash +pnpm run dev +``` + +Ваш блог будет доступен по адресу `http://localhost:4321/`. + +## 2. Интеграция MDX для динамичного контента + +MDX позволяет вам писать компоненты JSX прямо внутри ваших Markdown-файлов, что делает контент невероятно гибким и интерактивным. Для начала установите интеграцию MDX в ваш проект Astro: + +```bash +pnpm astro add mdx +``` + +После установки Astro автоматически обновит ваш `astro.config.mjs`. + +Теперь вы можете создавать файлы с расширением `.mdx` в директории `src/content/blog/` (или любой другой, которую вы настроили для постов). Внутри MDX-файла вы можете использовать как обычный Markdown, так и импортировать и рендерить компоненты React, Vue, Svelte и т.д. + +Пример MDX-файла (`src/content/blog/my-first-mdx-post.mdx`): + +```mdx +--- +title: "Мой первый MDX пост" +publishDate: "2025-08-25" +description: "Пример использования MDX в Astro." +--- + +import MyComponent from "../../components/MyComponent.astro"; + +# Привет, MDX! + +Это обычный Markdown-текст. + + + +Вы можете встраивать любые компоненты прямо в ваш контент. +``` + +## 3. Создание компонентов и страниц + +Ваши посты будут автоматически обрабатываться Astro. Вам нужно лишь создать соответствующие макеты и компоненты для отображения контента. + +Например, вы можете создать компонент `src/components/MyComponent.astro`: + +```astro +--- +const { message } = Astro.props; +--- +
+

{message}

+
+``` + +Убедитесь, что ваш макет поста (например, `src/layouts/LayoutPost.astro`) использует `` для рендеринга содержимого MDX-файла. + +## 4. Оптимизация и развертывание + +Одним из главных преимуществ Astro является его производительность. Он генерирует статический HTML, что делает его идеальным для развертывания на CDN. Для сборки вашего блога выполните: + +```bash +pnpm run build +``` + +Результаты сборки будут находиться в директории `dist/`. Вы можете развернуть эту директорию на любом статическом хостинге, таком как Netlify, Vercel, Cloudflare Pages или GitHub Pages. Благодаря минимальному количеству JavaScript, ваш блог будет загружаться практически мгновенно, обеспечивая отличный пользовательский опыт и высокие показатели SEO. + +## Заключение + +Создание блога с Astro и MDX — это мощный и эффективный способ получить высокопроизводительный, SEO-оптимизированный и легко управляемый контент. Сочетание серверного рендеринга Astro и гибкости MDX позволяет создавать интерактивные и динамичные посты без ущерба для скорости. Начните свой проект сегодня и убедитесь в преимуществах этой современной связки технологий. diff --git a/frontend/src/content/post/what-is-astro-framework.md b/frontend/src/content/post/what-is-astro-framework.md new file mode 100644 index 0000000..111cff6 --- /dev/null +++ b/frontend/src/content/post/what-is-astro-framework.md @@ -0,0 +1,69 @@ +--- +title: "Что такое Astro? Ключевые преимущества фреймворка в {year} году" +description: "Подробный разбор веб-фреймворка Astro. Узнайте, как его архитектура Zero-JS-by-default и Islands Architecture обеспечивают высочайшую производительность." +publishDate: "2025-08-24" +author: "Sergey" +tags: ["Astro", "Фреймворк", "JavaScript"] +coverImage: + src: "/images/posts/2025/08/astro.avif" + alt: "Абстрактный код на холсте" +--- + +## Введение + +В мире веб-разработки, где каждую неделю появляются новые инструменты, бывает сложно уследить за трендами. Однако некоторые фреймворки выделяются на общем фоне, предлагая уникальный подход к созданию сайтов. Один из таких — **Astro**. Это современный фреймворк, созданный для построения быстрых, контент-ориентированных веб-сайтов. + +## Что такое Astro? + +Astro — это веб-фреймворк, предназначенный для создания многостраничных приложений (MPA) с упором на максимальную производительность. В отличие от SPA-фреймворков (Single Page Application), таких как React или Vue, которые загружают весь сайт как одно большое JavaScript-приложение, Astro генерирует статичные HTML-страницы во время сборки. Это означает, что пользователь получает готовый контент практически мгновенно. + +Идеальные проекты для Astro — это блоги, портфолио, маркетинговые сайты, лендинги и сайты электронной коммерции. То есть любые проекты, где скорость загрузки и SEO играют ключевую роль. + +## Концепция №1: Zero JS by Default + +Главный принцип Astro — **ноль клиентского JavaScript по умолчанию**. Что это значит? Astro обрабатывает весь ваш код на сервере во время сборки и отдает в браузер только чистый HTML и CSS. JavaScript, который вы пишете (например, для компонента React), не будет отправлен пользователю, если вы этого не укажете явно. + +Это радикально снижает объем загружаемых данных и время на их обработку в браузере, что напрямую влияет на показатели Core Web Vitals и общее впечатление пользователя. + +## Концепция №2: Islands Architecture (Архитектура Островов) + +Но что делать, если на странице нужна интерактивность? Например, кнопка "добавить в корзину", слайдер или форма поиска. Для этого Astro использует **Архитектуру Островов**. + +Представьте вашу статическую HTML-страницу как океан. "Острова" — это отдельные интерактивные компоненты, которые "плавают" в этом океане. Каждый такой остров загружает свой собственный, изолированный JavaScript, не затрагивая остальную часть страницы. + +С помощью специальных директив вы можете контролировать, как и когда загружается JavaScript для каждого компонента: + +- `client:load`: Загрузить JS сразу же. +- `client:idle`: Загрузить JS, когда основной поток браузера освободится. +- `client:visible`: Загрузить JS, когда компонент появится в области видимости пользователя. + +Этот подход позволяет добавлять интерактивность точечно, сохраняя при этом высочайшую производительность. + +## Ключевые преимущества Astro + +### 1. Непревзойденная производительность + +За счет минимального использования JavaScript на клиенте сайты на Astro загружаются молниеносно. Это дает огромное преимущество в пользовательском опыте и SEO. + +### 2. Гибкость в выборе UI-фреймворка + +Вы можете использовать компоненты, написанные на **React, Preact, Svelte, Vue, SolidJS** и других фреймворках, в одном и том же проекте. Astro возьмет на себя их рендеринг на сервере, позволяя вам использовать любимые инструменты без ущерба для производительности. + +### 3. Ориентация на контент + +В Astro встроена первоклассная поддержка Markdown и MDX. Система "коллекций контента" (Content Collections) позволяет типизировать и валидировать ваши markdown-файлы, что делает управление большим блогом или сайтом с документацией простым и надежным. + +### 4. Превосходное SEO + +Так как Astro по умолчанию генерирует статический HTML, поисковым роботам очень легко сканировать и индексировать ваш сайт. Это обеспечивает отличные позиции в поисковой выдаче "из коробки". + +## Astro или Next.js? + +Next.js — это мощный фреймворк, но он ориентирован на создание сложных веб-приложений (SPA). По умолчанию он загружает значительно больше клиентского JavaScript. + +- **Выбирайте Astro**, если ваш приоритет — скорость и контент: блоги, портфолио, новостные сайты, документация. +- **Выбирайте Next.js**, если вы создаете сложное интерактивное приложение, похожее на десктопное: социальные сети, дашборды, сложные редакторы. + +## Заключение + +Astro — это не просто еще один фреймворк. Это сдвиг парадигмы в сторону производительности и эффективности. Он берет лучшие идеи из мира статических сайтов и сложных JavaScript-приложений, объединяя их в мощный и удобный инструмент. Если вы хотите создавать самые быстрые сайты в вебе, Astro — ваш выбор №1 в 2025 году. diff --git a/frontend/src/content/post/why-solidjs-is-the-future.md b/frontend/src/content/post/why-solidjs-is-the-future.md new file mode 100644 index 0000000..70b0cf0 --- /dev/null +++ b/frontend/src/content/post/why-solidjs-is-the-future.md @@ -0,0 +1,116 @@ +--- +title: "Почему SolidJS — это будущее: Сравнение с React" +description: "Сравнение SolidJS и React. Узнайте, как отказ от Virtual DOM в SolidJS обеспечивает лучшую производительность и более интуитивный опыт разработки." +publishDate: "2025-09-09" +author: "Сергей" +tags: ["SolidJS", "React", "Производительность"] +coverImage: + src: "/images/posts/2025/09/solidjs-vs-react.avif" + alt: "Логотипы SolidJS и React" +--- + +## Введение + +React десятилетиями был королем фронтенд-разработки. Его декларативный подход и компонентная модель изменили то, как мы строим пользовательские интерфейсы. Но что, если я скажу вам, что существует инструмент, который предлагает похожий опыт разработки, но с радикально лучшей производительностью? Встречайте **SolidJS**. + +Этот фреймворк быстро набирает популярность, и многие называют его будущим веба. В этой статье мы разберемся, что делает SolidJS таким особенным, сравним его напрямую с React и на примерах кода покажем, почему за ним стоит следить. + +## Что такое SolidJS? + +SolidJS — это декларативная JavaScript-библиотека для создания пользовательских интерфейсов. Звучит знакомо? Да, на первый взгляд, он очень похож на React. Вы пишете компоненты в виде функций, используете JSX и управляете состоянием. + +Однако ключевое отличие кроется "под капотом". SolidJS — это **по-настоящему реактивная** библиотека, которая **не использует Virtual DOM (VDOM)**. + +## Главное отличие: Реактивность без Virtual DOM + +Чтобы понять преимущество SolidJS, нужно вспомнить, как работает React. + +### Как работает React? + +Когда состояние в React-компоненте меняется (например, через `useState`), React заново выполняет всю функцию компонента. Затем он создает новое "дерево" объектов в памяти (Virtual DOM), сравнивает его со старой версией, находит различия (этот процесс называется "diffing" или "reconciliation") и только потом применяет эти изменения к реальному DOM. + +Этот подход работает, но он избыточен. Повторный вызов целых функций и сравнение деревьев — это дополнительная работа, которая потребляет ресурсы. + +### Как работает SolidJS? + +SolidJS избавляется от этого посредника. Вместо VDOM он использует тонко настроенную систему реактивности, основанную на "сигналах" (Signals). + +1. **Компиляция:** Во время сборки SolidJS компилирует ваш JSX в очень эффективный нативный JavaScript-код, который создает DOM-узлы напрямую. +2. **Реактивность:** Компоненты SolidJS выполняются **только один раз**. Когда вы создаете "сигнал" (аналог `useState`), SolidJS отслеживает, где именно в DOM используется его значение. +3. **Точечные обновления:** При изменении сигнала SolidJS не перезапускает компонент. Он обновляет **только тот конкретный текстовый узел или атрибут** в DOM, который зависел от этого сигнала. + +Это как снайперский выстрел вместо ковровой бомбардировки. + +## Сравнение на практике: Компонент счетчика + +Давайте посмотрим на код. Вот простой счетчик в React и SolidJS. + +### Счетчик на React + +```jsx +import { useState, useEffect } from 'react'; + +function ReactCounter() { + const [count, setCount] = useState(0); + + useEffect(() => { + console.log("Компонент ReactCounter был перерисован"); + }); + + const increment = () => { + setCount(count + 1); + }; + + return ( +
+

React Cчетчик: {count}

+ +
+ ); +} +``` + +При каждом клике на кнопку вы увидите в консоли сообщение "Компонент ReactCounter был перерисован". Вся функция выполняется заново. + +### Счетчик на SolidJS + +```jsx +import { createSignal, onCleanup } from 'solid-js'; + +function SolidCounter() { + const [count, setCount] = createSignal(0); + + console.log("Компонент SolidCounter выполнился. Этот лог появится только один раз!"); + + const increment = () => { + setCount(count() + 1); + }; + + // onCleanup для демонстрации, что компонент не пересоздается + onCleanup(() => { + console.log("Компонент SolidCounter удален"); + }); + + return ( +
+

SolidJS Cчетчик: {count()}

+ +
+ ); +} +``` + +Здесь сообщение в консоли появится **только при первом рендере**. При последующих кликах SolidJS будет обновлять только текст внутри тега `

`, не затрагивая ничего другого. Функция компонента больше никогда не будет вызвана. + +## Ключевые преимущества SolidJS + +1. **Невероятная производительность:** Отсутствие VDOM и точечные обновления делают SolidJS одним из самых быстрых UI-фреймворков в мире, опережая React, Vue и Svelte в большинстве бенчмарков. +2. **Интуитивный код:** API очень похож на React Hooks, что делает переход легким. Однако правила проще: не нужно беспокоиться о массивах зависимостей в `useEffect` (`createEffect` в Solid) или использовать `useCallback`. +3. **Меньший размер бандла:** Код, генерируемый SolidJS, очень компактный. Ваше приложение будет весить меньше и загружаться быстрее. +4. **Настоящая декларативность:** Вы описываете, *как* состояние связано с UI, и SolidJS берет на себя всю остальную магию, создавая эффективный и оптимизированный граф зависимостей. + +## Заключение + +React — все еще фантастический и надежный инструмент. Но если вы ищете максимальную производительность, меньший размер и более элегантную модель реактивности без лишних абстракций, **SolidJS — это то, на что стоит обратить внимание**. + +Он берет лучшие идеи React, но реализует их на более низком уровне, ближе к "железу" браузера. Это не просто "еще один фреймворк", а потенциальный взгляд на будущее веб-разработки — будущее без Virtual DOM. diff --git a/frontend/src/content/post/wordpress-vs-payload-cms-future.md b/frontend/src/content/post/wordpress-vs-payload-cms-future.md new file mode 100644 index 0000000..5046785 --- /dev/null +++ b/frontend/src/content/post/wordpress-vs-payload-cms-future.md @@ -0,0 +1,120 @@ +--- +title: "WordPress — это прошлое. 10 причин, почему Payload CMS — это будущее управления контентом." +description: "WordPress уходит в прошлое. Узнайте 10 причин, почему разработчики выбирают Headless CMS, такие как Payload, для скорости, безопасности и гибкости." +publishDate: "2025-09-05" +author: "Sergey" +tags: ["Payload CMS", "WordPress", "Headless CMS"] +coverImage: + src: "/images/posts/2025/09/pour-over.avif" + alt: "Сравнение WordPress и Payload CMS" +--- + +## Введение + +На протяжении почти двух десятилетий WordPress был синонимом слова "веб-сайт". Он демократизировал публикацию контента, позволив миллионам людей без технических знаний создавать блоги и сайты. Но веб изменился. Сегодняшние требования к производительности, безопасности, гибкости и опыту разработчика (DX) заставляют нас переосмыслить инструменты, которые мы используем. + +Монолитная архитектура WordPress, основанная на PHP и плагинах, все чаще становится узким местом. На смену ей приходит новое поколение Headless CMS, и **Payload CMS** — один из самых ярких его представителей. Это не просто "еще одна CMS", это принципиально иной подход. Вот 10 причин, почему Payload — это будущее, а WordPress рискует остаться в прошлом. + +## 1. Архитектура Headless-First: Свобода без границ + +

+ +**WordPress:** Это монолит. Он жестко связывает админ-панель (backend) с системой шаблонов (frontend). Хотите использовать современный frontend-фреймворк, такой как React, Vue или Svelte? Это возможно, но через "костыли" в виде REST API, которое не было изначально спроектировано для таких задач. + +**Payload CMS:** Это Headless по своей природе. Он предоставляет вам мощную админ-панель и гибкий API, а что вы будете делать с этим API — ваше дело. Вы можете создавать нативные мобильные приложения, сверхбыстрые статические сайты на Astro или Next.js, или даже отправлять контент на умные часы. Вы получаете полную свободу выбора технологий. + +
+ +## 2. Code-First, а не Click-First: Конфигурация как код + +
+ +**WordPress:** Создание кастомных типов постов и полей (Custom Fields) — это царство плагинов вроде ACF и бесконечных кликов в админ-панели. Эту конфигурацию сложно версионировать, переносить между окружениями и поддерживать в команде. + +**Payload CMS:** Вы определяете структуру вашего контента (коллекции) прямо в коде, используя TypeScript. Это дает невероятные преимущества: автодополнение, строгую типизацию, возможность хранить всю конфигурацию в Git, а также легкое развертывание и командную работу. Ваша схема данных — это часть вашего приложения. + +
+ +## 3. Современный стек: TypeScript, Node.js, React + +
+ +**WordPress:** Основан на PHP. Это надежный язык, но его синтаксис и экосистема для многих современных разработчиков выглядят устаревшими. Админ-панель написана с использованием jQuery и Backbone.js. + +**Payload CMS:** Построен на технологиях, которые сегодня являются стандартом индустрии. Node.js и Express на бэкенде, React и TypeScript в админ-панели. Это означает, что ваш проект легко поддерживать, а найти для него разработчиков — гораздо проще. + +
+ +## 4. Никакого "Ада плагинов" + +
+ +**WordPress:** Хотите SEO? Плагин. Нужен кэш? Плагин. Двухфакторная аутентификация? Тоже плагин. Сайт на 20-30 плагинов от разных авторов — обычное дело. Это создает огромные дыры в безопасности, проблемы с производительностью и кошмар при обновлениях. + +**Payload CMS:** Базовый функционал, такой как аутентификация, права доступа, загрузка файлов и предпросмотр, встроен в ядро. Функционал расширяется через чистую и понятную систему плагинов, которые являются просто функциями, а не черными ящиками. + +
+ +## 5. Полный контроль и собственный хостинг + +
+ +**WordPress:** Часто привязывает вас к специфическому хостингу, оптимизированному под PHP и MySQL. + +**Payload CMS:** Это просто Node.js приложение. Вы можете захостить его где угодно: на Vercel, AWS, DigitalOcean или на собственном сервере. Вы полностью контролируете свою инфраструктуру и данные. + +
+ +## 6. Феноменальный Developer Experience (DX) + +
+ +**Payload CMS:** Создан разработчиками для разработчиков. Отличная документация, предсказуемый API, локальная разработка, которая доставляет удовольствие. Все направлено на то, чтобы вы могли творить, а не бороться с системой. + +**WordPress:** Разработка под WordPress часто включает в себя изучение сотен хуков, функций с неочевидными названиями и "The Loop". Это может быть очень медленным и разочаровывающим процессом. + +
+ +## 7. Производительность по умолчанию + +
+ +**WordPress:** Каждый плагин и сложная тема добавляют нагрузку. Без агрессивного кэширования добиться высокой производительности на WordPress-сайте очень сложно. + +**Payload CMS:** Так как он отдает только чистые данные через API, ваш frontend может быть максимально оптимизирован. Связка Payload + статический генератор сайтов (Astro, Next.js) по умолчанию создает одни из самых быстрых сайтов в мире. + +
+ +## 8. Масштабируемость + +
+ +**WordPress:** Может справляться с высокой нагрузкой, но это требует серьезных инженерных усилий и затрат на инфраструктуру. + +**Payload CMS:** Построенный на Node.js и MongoDB/PostgreSQL, он изначально спроектирован для асинхронных операций и отлично масштабируется горизонтально, следуя современным облачным практикам. + +
+ +## 9. Безопасность + +
+ +**WordPress:** Является целью №1 для хакеров во всем мире из-за своей популярности и огромного количества уязвимых плагинов. + +**Payload CMS:** Имеет гораздо меньшую площадь атаки. Современные методы аутентификации (HTTP-only cookies, JWT), гранулярная система прав доступа и отсутствие зависимости от сторонних плагинов делают его на порядок более безопасным решением. + +
+ +## 10. Это не просто CMS, это фреймворк + +
+ +**WordPress:** Это CMS, которую пытаются превратить во фреймворк для создания приложений. + +**Payload CMS:** Это фреймворк для создания приложений, который "из коробки" дает вам мощную CMS. Вы можете построить на его основе не только сайт, но и сложную CRM, backend для SaaS-платформы или любую другую систему, где требуется управление контентом и данными. + +
+ +## Заключение + +WordPress проделал огромную работу и навсегда останется в истории веба. Но технологии не стоят на месте. Для современных, быстрых, безопасных и масштабируемых проектов нужны современные инструменты. Payload CMS предлагает именно такой инструмент — с фокусом на разработчика, гибкостью и производительностью, которые необходимы вебу будущего. diff --git a/frontend/src/env.d.ts b/frontend/src/env.d.ts new file mode 100644 index 0000000..9147834 --- /dev/null +++ b/frontend/src/env.d.ts @@ -0,0 +1,3 @@ +/// +/// +/// diff --git a/frontend/src/globalInterfaces.ts b/frontend/src/globalInterfaces.ts new file mode 100644 index 0000000..0790d13 --- /dev/null +++ b/frontend/src/globalInterfaces.ts @@ -0,0 +1,55 @@ +// Типы для контактной информации +export type ContactInfo = + | { + readonly label: string; + readonly icon: string; + readonly value: string; + readonly isHtml?: false; + readonly link?: string; + readonly subValue?: string; + } + | { + readonly label: string; + readonly icon: string; + readonly value: string; + readonly isHtml: true; + } + | { + readonly label: string; + readonly icon: string; + readonly emails: readonly string[]; + }; + +// Тип для полей формы +export interface FormField { + label: string; + placeholder: string; + type: string; + name: string; +} + +// Тип для элементов формы +export type FormRow = FormField[]; + +// Тип для тегов блога +export interface BlogTag { + id: string; + name: string; + description?: string; +} + +// Тип для постов блога +export interface BlogPost { + title: string; + description: string; + pubDate: Date; + author: string; + image?: string; + tags: string[]; + draft?: boolean; + id?: string; + collectionId?: string; +} + +// Тип для таймера +export type TimeoutId = number | null; \ No newline at end of file diff --git a/frontend/src/icons/calendar.svg b/frontend/src/icons/calendar.svg new file mode 100644 index 0000000..234dc7c --- /dev/null +++ b/frontend/src/icons/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/chevron-left.svg b/frontend/src/icons/chevron-left.svg new file mode 100644 index 0000000..c5906cd --- /dev/null +++ b/frontend/src/icons/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/envelope.svg b/frontend/src/icons/envelope.svg new file mode 100644 index 0000000..5beb4be --- /dev/null +++ b/frontend/src/icons/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/facebook.svg b/frontend/src/icons/facebook.svg new file mode 100644 index 0000000..534261f --- /dev/null +++ b/frontend/src/icons/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/linkedin.svg b/frontend/src/icons/linkedin.svg new file mode 100644 index 0000000..96174e6 --- /dev/null +++ b/frontend/src/icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/twitter.svg b/frontend/src/icons/twitter.svg new file mode 100644 index 0000000..0ba88e9 --- /dev/null +++ b/frontend/src/icons/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/user.svg b/frontend/src/icons/user.svg new file mode 100644 index 0000000..3c41781 --- /dev/null +++ b/frontend/src/icons/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/whatsapp.svg b/frontend/src/icons/whatsapp.svg new file mode 100644 index 0000000..1588e36 --- /dev/null +++ b/frontend/src/icons/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/layouts/Layout.astro b/frontend/src/layouts/Layout.astro new file mode 100644 index 0000000..7319f93 --- /dev/null +++ b/frontend/src/layouts/Layout.astro @@ -0,0 +1,48 @@ +--- +import '@assets/css/global.css' +import Header from '@components/layout/header/Header.astro' +import Footer from '@components/layout/footer/Footer.astro' +import Breadcrumbs, { Breadcrumb } from '@components/base/Breadcrumbs.astro' + +interface Props { + title: string; + description?: string; + canonicalURL?: string; + breadcrumbs?: Breadcrumb[]; + hideNav?: boolean; +} + +const { title, description, canonicalURL: propCanonicalURL, breadcrumbs, hideNav = false } = Astro.props +const canonicalURL: string = propCanonicalURL ? propCanonicalURL : Astro.url.pathname +--- + + + + + + + {title} + + + + + + + + + + + + + +{!hideNav &&
} + +{!hideNav && breadcrumbs && breadcrumbs.length > 0 && } + +
+ +
+ +