diff --git a/.gitignore b/.gitignore index 2309cc8..58bd849 100644 --- a/.gitignore +++ b/.gitignore @@ -1,138 +1,24 @@ -# ---> Node -# Logs -logs -*.log +# build output +dist/ +.astro/ + +# dependencies +node_modules/ + +# logs npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* +pnpm-debug.log* +*.log -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files +# environment variables .env -.env.development.local -.env.test.local -.env.production.local +.env.production .env.local -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# vitepress build output -**/.vitepress/dist - -# vitepress cache directory -**/.vitepress/cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* +# macOS-specific files +.DS_Store +# jetbrains setting folder +.idea/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..22a1505 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode"], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d642209 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/README.md b/README.md index 4cbe928..fd1ff5e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,64 @@ -# anotherreflections-website-v2 +# anotherreflections.ru — v2 -anotherreflections.ru v2 � Astro 5 static site (markdown + RSS for IPB importer) \ No newline at end of file +Главный сайт-портал ролевой группы «Иные Отражения» — переделан со старого WordPress (тема `darkness-10`) на статический Astro 5. + +## Стек + +- **Astro 5** + Content Collections (markdown) +- **@astrojs/rss** — RSS-фиды (общий + per-category), формат под IPB RSS Importer +- **@astrojs/sitemap** — sitemap.xml автоматически +- **sanitize-html** — очистка HTML тела поста для `` в RSS + +## Содержимое + +- `src/content/posts/*.md` — 50 постов 2009–2015, мигрированы из WP (frontmatter включает `legacyId` для трассировки и `categorySlugs` для категорий) +- `src/content/pages/*.md` — 6 страниц: `/o-nas/`, `/nashi-druzya/`, страницы про игры +- `src/content/_categories.json` — справочник категорий из WP (10 шт.) +- `_wp-export.json` — исходный дамп WP, оставлен в репо для трассируемости миграции; не используется в build + +## Структура URL + +- `/` — главная (лента всех постов) +- `//` — пост или статическая страница +- `/category//` — лента категории +- `/feed.xml` — общий RSS +- `/category//feed.xml` — RSS категории +- `/sitemap-index.xml` — sitemap + +URL постов совпадают с историческими WP-slug, т.к. `permalink_structure='/%postname%/'`. Никаких 301-редиректов не требуется — slug сохранены 1:1. + +## RSS для IPB Importer + +Фид заточен под `ACP → Community → RSS Feeds → Add Feed`: + +- RSS 2.0 strict, `` в RFC-822, абсолютные `` +- `` = URL поста — IPB по нему дедуплицирует темы при повторных сканах +- `` с CDATA — полное HTML тело поста, IPB подставит его в тело темы +- `` обновляется при каждом build — Importer проверяет, изменился ли фид +- **Cutoff:** фид отдаёт только посты с `pubDate >= RSS_CUTOFF` (см. `src/consts.ts`). Архив 2009–2015 остаётся на сайте для людей, но в форумы не вбрасывается одной волной. + +## Разработка + +```bash +npm install +npm run dev # http://localhost:4321 +npm run build # → dist/ +npm run preview +``` + +## Миграция (одноразово, уже выполнено) + +```bash +npm run migrate # _wp-export.json → src/content/{posts,pages}/*.md +``` + +Скрипт `scripts/migrate-wp.mjs` конвертирует HTML тела постов в markdown (минимальный конвертер без внешних зависимостей: `///
  • /
      /
      /
      /

      ` + HTML entities). + +## Деплой + +Контейнер `nginx:alpine` на `web.hhivp.com`, шаблон по образцу `stbolshevik.ru` (CI/CD: Gitea → SSH-деплой на свободный порт). См. `CLAUDE.md` после первого деплоя. + +## История + +- v1: WordPress 6.9 + тема `darkness-10` + 23 активных плагина, БД `anotherreflctions_ru` (sic) на `db.hhivp.com`, контейнер `anotherreflections-ru:4080` на `web.hhivp.com`. Репо: `git.striker.su/striker/anotherreflections-website` (ветка `feat/dockerize`). Оставлен для отката. +- v2 (этот репо): Astro 5 static, 2026-05-20. diff --git a/_wp-export.json b/_wp-export.json new file mode 100644 index 0000000..f71b7e9 --- /dev/null +++ b/_wp-export.json @@ -0,0 +1,1160 @@ +{ + "site": { + "name": "Иные Отражения", + "description": "Ролевой проект по современной фантастике", + "url": "https://anotherreflections.ru", + "home": "https://anotherreflections.ru", + "language": "ru-RU", + "timezone": "Europe/Moscow", + "date_format": "d/m/Y", + "permalink_structure": "/%postname%/" + }, + "authors": [ + { + "id": 1, + "login": "admin", + "display_name": "admin" + } + ], + "categories": [ + { + "id": 1, + "name": "Общие новости", + "slug": "obshhie-novosti", + "description": "", + "count": 44, + "parent": 0 + }, + { + "id": 6, + "name": "Технические", + "slug": "tech_news", + "description": "", + "count": 9, + "parent": 0 + }, + { + "id": 8, + "name": "На правах рекламы", + "slug": "reklama", + "description": "", + "count": 8, + "parent": 0 + }, + { + "id": 9, + "name": "Наши друзья", + "slug": "nashi-druzya", + "description": "", + "count": 3, + "parent": 0 + }, + { + "id": 16, + "name": "Ролевые игры", + "slug": "rolgames", + "description": "", + "count": 2, + "parent": 0 + }, + { + "id": 14, + "name": "Над бездной", + "slug": "nad-bezdnoj", + "description": "", + "count": 1, + "parent": 0 + }, + { + "id": 15, + "name": "Глубина", + "slug": "glubina", + "description": "", + "count": 1, + "parent": 0 + }, + { + "id": 5, + "name": "Фан-арт", + "slug": "fun_art", + "description": "", + "count": 0, + "parent": 0 + }, + { + "id": 7, + "name": "Сумерки Дозоров", + "slug": "sumerkidozorov", + "description": "", + "count": 0, + "parent": 0 + }, + { + "id": 17, + "name": "Клуб Лукьяненко", + "slug": "lukianenkoclub", + "description": "", + "count": 0, + "parent": 0 + } + ], + "tags": [ + { + "id": 12, + "name": "2012", + "slug": "2012", + "count": 1 + }, + { + "id": 13, + "name": "новый год", + "slug": "novyj-god", + "count": 1 + } + ], + "posts": [ + { + "id": 448, + "author_id": 1, + "date": "2015-12-30 19:26:49", + "date_gmt": "2015-12-30 15:26:49", + "modified": "2015-12-30 19:26:49", + "title": "Поздравляем вас с Новым годом и Рождеством!", + "slug": "pozdravlyaem-vas-s-novym-godom-i-rozhdestvom", + "excerpt": "", + "content_html": "В наступающем году мы желаем вам только приятных открытий, только радостных сюрпризов, много позитивного общения, продуктивных обсуждений в кругу близких друзей, взвешенных честных мнений и, конечно, ярких радостных впечатлений от жизни!\r\n\r\nПомните, каждый из нас сам раскрашивает свою жизнь яркими красками!\r\n\r\nС уважением, ролевая группа \"Иные Отражения\"\r\n\r\n ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 440, + "author_id": 1, + "date": "2015-05-29 01:26:28", + "date_gmt": "2015-05-28 21:26:28", + "modified": "2015-06-02 01:27:06", + "title": "Внимание! Технические работы!", + "slug": "vnimanie-texnicheskie-raboty-4", + "excerpt": "", + "content_html": "2  июня  2015г. с 3 до 4 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с предоставлением услуг длительностью до 30 минут.\r\nПриносим  Вам  свои извинения за доставленные неудобства и надеемся на Ваше понимание!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 432, + "author_id": 1, + "date": "2014-12-30 20:07:11", + "date_gmt": "2014-12-30 16:07:11", + "modified": "2014-12-30 20:07:11", + "title": "C наступающим Новым 2015 Годом и Рождеством!", + "slug": "c-nastupayushhim-novym-2015-godom-i-rozhdestvom", + "excerpt": "", + "content_html": "\"NY-baner\"\r\n\r\n \r\n\r\nПодходит к своему завершению 2014 год. В жизни каждого из нас произошло много событий - ярких, запоминающихся, которые наполнили наши сердца радостью или принесли бесценный опыт.\r\n\r\nГорячо поздравляем Вас с наступающим Новым 2015 Годом и Рождеством! Пусть сбудутся все Ваши мечты и новый 2015 год принесёт Вам и Вашим родным и близким Радость и Процветание! Самое главное – не бояться перемен, добиваться поставленных целей и быть уверенными – каждый из нас идет правильной дорогой!\r\n\r\nБудьте счастливы в Новом году! Здоровья, любви, удачи всем Вам!\r\n\r\n \r\n\r\nС уважением, администрация\r\n\r\nпроекта \"Иные Отражения\"", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 430, + "author_id": 1, + "date": "2014-12-27 23:17:02", + "date_gmt": "2014-12-27 19:17:02", + "modified": "2014-12-27 23:17:02", + "title": "РИ \"Дозоры-2015. Пасьянс Судьбы\"", + "slug": "ri-dozory-2015-pasyans-sudby", + "excerpt": "", + "content_html": "МГ «Раздвоение личности» (Гурда и Леся) и мастер по магии Гудшилд представляем вашему вниманию городскую ролевую игру «Дозоры: пасьянс Судьбы\".\r\nЭто наша четвертая игра по миру Дозоров (книги С. Лукьяненко \"Ночной Дозор\", \"Дневной Дозор\", \"Сумеречный Дозор\") в рамках проекта \"Провинциальные Дозоры\". В каждой игре мы стараемся придерживаться каноничного мира Дозоров, рассказывая истории, которые могли бы иметь место в нем.\r\n\r\nЦикл наших игр по этому миру представляет собой не связанные между собой истории о простой жизни (ой, простой ли?...) маленьких российских городков и провинциальных Дозоров, а так же о приключениях тех иных, которые попадают в \"тихую\" российскую глубинку и понимают, что в столицах было как-то даже безопасней...\r\n\r\nВам не надо знать предысторию прошлых игр и иметь игровые связи, чтобы попасть в новую игру. Каждая новая игра – это самостоятельная история.\r\n\r\nВ первой игре («Дозоры: провинциальные истории») мы доказали, что за пределами МКАДа жизнь в принципе возможна. Во второй игре («Дозоры: между Светом и Тьмой») нашими основными героями были Иные вне Дозоров (и мы доказали, что вне Дозоров жизнь есть). В третьей игре («Дозоры: фальшивые зеркала») небольшие оперативные группы дозорных из десяти российских городов совместными усилиями изучали ту самую «простую» жизнь российской глубинки.\r\n\r\nВ нашей четвертой игре мы хотим поговорить о неофициальной жизни иных, собрав их там, где они могут установить собственные правила отношений – хотя бы в рамках правил фестиваля. Да-да, у этого мероприятия, как у всякого другого общественного мероприятия, есть свои правила, но организаторы не спешат раскрывать их посетителям. Впрочем, те, кто очень дорожит своей свободой и независимостью, могут не волноваться – правила носят рекомендательный характер, и никакого принуждения в этих правилах нет, за что «мерлинфест» так ценится среди знатоков. Но вот знатоками ЧЕГО становятся завсегдатаи фестиваля – это никому не известно. Кроме, разумеется, самих знатоков. И тех, кто к ним присоединится, став участниками этого странного мероприятия.\r\n\r\nТакова завязка игры.\r\n\r\nВ игровом мире действие происходит в вымышленном городе Пряжно, но в реальности вам не потребуется выезжать в российскую глубинку - игра будет проходить в одном из парков Москвы, во вполне комфортное дневное и вечернее время (без ночной игры - ночью спать надо!:)) , два выходных дня подряд.\r\n\r\nИгровое время действия, в отличие от физического места, будет вполне соответствовать реальности - весна 2015 г.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "На правах рекламы", + "slug": "reklama" + }, + { + "name": "Ролевые игры", + "slug": "rolgames" + } + ], + "tags": [] + }, + { + "id": 422, + "author_id": 1, + "date": "2014-12-02 22:59:22", + "date_gmt": "2014-12-02 18:59:22", + "modified": "2014-12-27 23:08:40", + "title": "Авторская презентация книги «Шестой Дозор» Сергея Лукьяненко в «Новый книжный» (Москва)", + "slug": "avtorskaya-prezentaciya-knigi-shestoj-dozor-sergeya-lukyanenko-v-novyj-knizhnyj-moskva", + "excerpt": "", + "content_html": "[caption id=\"\" align=\"aligncenter\" width=\"200\"]\"\" Авторская презентация книги «Шестой Дозор» Сергея Лукьяненко в «Новый книжный» (Москва)[/caption]\r\n\r\n \r\n\r\n6 декабря 2014 года пройдет презентация книги «Шестой Дозор» Сергея Лукьяненко в магазине «Новый книжный» по адресу м. Сухаревская, Мал. Сухаревская пл., 12, ТЦ «Садовая галерея» (1-й этаж). Начало в 14:00. Вход свободный. Приезжайте заранее! Участники презентации смогут приобрести книгу, пообщаться с писателем, сфотографироваться и взять автограф.\r\n\r\nС 6 декабря 2014 года продажи книги стартуют по всей стране! Предварительный заказэлектронной книги «Шестой Дозор» можно сделать в ЛитРес.\r\n\r\nИсточник: http://www.lukianenko.ru/news_rus/373.html", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "На правах рекламы", + "slug": "reklama" + }, + { + "name": "Наши друзья", + "slug": "nashi-druzya" + } + ], + "tags": [] + }, + { + "id": 426, + "author_id": 1, + "date": "2014-10-22 23:09:12", + "date_gmt": "2014-10-22 19:09:12", + "modified": "2014-12-27 23:15:21", + "title": "Приглашаем Вас на РИ \"Дозоры-2015. Пасьянс Судьбы\"", + "slug": "priglashaem-vas-na-ri-dozory-2015-pasyans-sudby", + "excerpt": "", + "content_html": " \r\n\r\n\"\"\r\n\r\n \r\n\r\nВерить ли в судьбу – личный выбор каждого, поэтому никто не заставляет гостей фестиваля, посвященного дню рождению великого «нулевого» мага Мерлина, принимать как истину, что судьба иного в его собственных руках. Или не в его руках? Довольно многое в мире не имеет однозначного ответа, как неоднозначна и судьба самого Мерлина – великого Светлого мага, ставшего впоследствии не менее великим Тёмным.\r\nЗнал ли он, к чему приведут его деяния? Сам ли сделал такой выбор? Какие именно артефакты он создавал и зачем? Темы эти входят в программу «научных дискуссий» фестиваля и пользуются неизменной популярностью. Говорят, Великий Маг обладал умением собирать «Пасьянс Судьбы» - ряд знаний, способностей и артефактов, сочетание которых может развернуть перед обладателем знания прошлого, возможности настоящего и картину будущего. Неизвестно, правда ли это, учитывая судьбу самого Мерлина, но это не мешает всем желающим приехать на праздник и поговорить об этом с организаторами и участниками. Самые неожиданные откровения! Самые странные умения! Самые смелые версии и научные открытия рождаются именно в этом месте, которое, одновременно и «научный симпозиум», и фестиваль, и встреча старых друзей (а может и недругов). Шутники называют фестиваль «мерлинфест», но он имеет и официальное название.\r\n«Пасьянс Судьбы» - это и есть официальное название фестиваля для Иных. Информацию о нем можно прочитать лишь через сумрак и узнать место проведения тоже. Если вы смогли узнать это – вас примут как своего, которому рады, но ничем не обязаны, которому помогут, но не защитят от встреч, к которым сами иной не готов.\r\nДозоры официально НЕ рекомендуют никому из иных ездить на этот фестиваль, потому что не хотят отвечать ни за что, что там происходит или может произойти, но, как ни странно, дозорные сами же и ездят. Разумеется, неофициально. Частным порядком. Наравне с Иными вне Дозоров и наравне с теми, чей дозор окончен, ведь более свободной и демократичной площадки для общения не найти, а цели, как вы понимаете, могут быть у всех очень-очень разные.\r\nОпытные посетители никогда не приедут на этот праздник, не уладив своих дел, а неопытным посетителям может показаться, что рекомендации Дозоров – это формализм. Как знать, как знать… Мы не станем это комментировать, а просто пригласим вас проверить слухи и попробовать решить свои проблемы, которые, быть может, не могут быть решены нигде, кроме как в маленьком городке Пряжно, затерявшемся где-то на просторах Центральной России. Именно г. Пряжно на выходные 25-26 апреля 2015 года станет площадкой этого странного мероприятия – «мерлинфеста».\r\nЗабавно, что, в отличие от других фестивалей, этот проходит в городе, имеющем свои Дозоры – маленькие и провинциальные, но самые настоящие и даже очень активные. Более того, эти Дозоры – это только половина Иных города, вторая половина в Дозорах никогда не состояли. Почему сделан такой странный выбор места и как присутствие Дозоров сочетается с традициями неподконтрольности фестиваля – неизвестно. Зато известно со слов организаторов, что традиции свободы фестиваля, от которого после первого же проведения открестились и Светлые, и Темные, и даже Инквизиция, не могут быть нарушены. Говорят, спутать «пасьянс Судьбы» Великого Мерлина невозможно, а кто как ни он сам покровительствует данному фестивалю? Но тут мы уже уходим в область легенд, которых на фестивале предостаточно, и они вряд ли имеют смысл для кого-то, кроме гостей.\r\n\r\nПоэтому, скажем просто и прямо: приезжайте!\r\nОтложите дела, возьмите отпуск и приезжайте. Найдете ли вы свою Судьбу или просто славно проведете время – не так уж и важно. Говорят, что важно тут что-то другое, но что именно – даже в этом каждый может сделать выбор сам.\r\nПодумайте, а что ВАМ важно в судьбе Иного? Сделайте свой выбор и – в путь!\r\n\r\nМы, организаторы, вас ждем.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "На правах рекламы", + "slug": "reklama" + }, + { + "name": "Ролевые игры", + "slug": "rolgames" + } + ], + "tags": [] + }, + { + "id": 424, + "author_id": 1, + "date": "2014-10-20 23:04:55", + "date_gmt": "2014-10-20 19:04:55", + "modified": "2014-12-27 23:05:40", + "title": "Дата выхода продолжения Дозоров", + "slug": "data-vyxoda-prodolzheniya-dozorov", + "excerpt": "", + "content_html": "Завершилось написание романа под рабочим названием «Шестой Дозор»! Ориентировочная дата появления книги в магазинах России – 06 декабря 2014 года.\r\nВ ближайших планах Сергея Лукьяненко, присутствие на фестивале фантастики \"Созвездие Аю-Даг\".", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "На правах рекламы", + "slug": "reklama" + } + ], + "tags": [] + }, + { + "id": 416, + "author_id": 1, + "date": "2014-08-17 23:49:49", + "date_gmt": "2014-08-17 19:49:49", + "modified": "2014-08-17 23:49:49", + "title": "Внимание! Технические работы!", + "slug": "vnimanie-texnicheskie-raboty-6", + "excerpt": "", + "content_html": "19 августа 2014г. с 3 до 4-30 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с доступом к сайтам проекта длительностью до 15 минут. Приносим Вам свои извинения за доставленные неудобства и надеемся на Ваше понимание!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 408, + "author_id": 1, + "date": "2014-07-24 01:11:07", + "date_gmt": "2014-07-23 21:11:07", + "modified": "2014-07-24 01:11:07", + "title": "Новая книга Сергея Лукьяненко «Участковый»", + "slug": "novaya-kniga-sergeya-lukyanenko-uchastkovyj", + "excerpt": "", + "content_html": "«Участковый» — это третья книга из соавторского цикла «Дозоры» написанная совместно с Алексом де Клемешье. События в книге происходят в Сибири 1972-го года. ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 393, + "author_id": 1, + "date": "2014-05-09 05:04:42", + "date_gmt": "2014-05-09 01:04:42", + "modified": "2014-05-16 20:23:25", + "title": "С праздником! С Днем Победы!", + "slug": "s-prazdnikom-s-dnem-pobedy", + "excerpt": "", + "content_html": "Дорогие ветераны Великой Отечественной войны! 
      Сердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям!
      Пусть День 9 мая прибавит новые силы пережившим войну, напомнит молодым, сколько жизней отдано за свободу нашей Родины, как надо любить и защищать свое Отечество!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 384, + "author_id": 1, + "date": "2013-12-31 19:17:12", + "date_gmt": "2013-12-31 15:17:12", + "modified": "2013-12-31 19:17:12", + "title": "C наступающим Новым 2014 Годом!", + "slug": "c-nastupayushhim-novym-2014-godom", + "excerpt": "", + "content_html": "От лица администрации и от себя лично поздравляю всех с Новым годом! Желаю всем счастья, здоровья, сбытия всех Ваших мечт, финансового и душевного спокойствия, искорки в глазах и успехов в выполнении всех Ваших начинаний.Постарайтесь забыть все то плохое, что у Вас может быть случилось, помните, что свою жизнь Вы делаете и сами, а значит нужно стремиться к самому лучшему! Еще раз всех с праздником, до встречи уже в Новом году!)\r\n\r\n \r\n\r\nStrik~er & Anotherreflections.ru", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 372, + "author_id": 1, + "date": "2013-09-25 13:45:12", + "date_gmt": "2013-09-25 09:45:12", + "modified": "2013-09-26 00:49:11", + "title": "Уважаемые игроки!", + "slug": "uvazhaemye-igroki", + "excerpt": "", + "content_html": "В связи с плановыми работами на площадке оператора связи 26 сентября 2013 г. с 5 до 6 утра возможен перерыв в доступе к сайтам проекта длительностью до 15 минут.\r\n\r\nПриносим извинения за доставленные неудобства.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 365, + "author_id": 1, + "date": "2013-08-25 03:15:01", + "date_gmt": "2013-08-24 23:15:01", + "modified": "2013-10-06 02:05:52", + "title": "Кто мы?", + "slug": "11", + "excerpt": "", + "content_html": "Мы - Ролевая группа \"Иные Отражения\".\r\nРолевая группа \"Иные Отражения\", первоначально известная как \"Иные Миры\" была образована в 2006 году, и первоначально включала в себя двух создателей-администраторов: Дмитрий \"Strik~er\" Гусев и Александр \"SpellSinger\" Шутов. Впоследствии в 2007 году ролевая группа \"Иные Миры\" объединилась с проектом \"Отражения\" и изменила своё название на \"Иные Отражения\".\r\nСейчас мы представляем Вашему вниманию следующие проекты:\r\n

      \r\nТакже в разработке находятся следующие миры:\r\n", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 361, + "author_id": 1, + "date": "2013-08-24 01:55:40", + "date_gmt": "2013-08-23 21:55:40", + "modified": "2013-08-24 01:55:40", + "title": "Внимание! Технические работы!", + "slug": "vnimanie-texnicheskie-raboty-3", + "excerpt": "", + "content_html": "В связи с проведением технических работ на серверах с 02:00 до 04:00 24 августа 2013 г. возможны перерывы в работе до 30 минут.\r\n\r\nПриносим свои извинения за доставленные неудобства.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 354, + "author_id": 1, + "date": "2013-08-18 01:40:06", + "date_gmt": "2013-08-17 21:40:06", + "modified": "2013-08-18 01:40:06", + "title": "Внимание! Мы ищем админов и гейм-мастеров!", + "slug": "vnimanie-my-ishhem-adminov-i-gejm-masterov", + "excerpt": "", + "content_html": "Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов:\r\n\r\nОбращаться на мыло admin@anotherreflections.ru или в группу ВКонтакте.\r\n", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + }, + { + "name": "На правах рекламы", + "slug": "reklama" + } + ], + "tags": [] + }, + { + "id": 348, + "author_id": 1, + "date": "2013-08-06 10:05:18", + "date_gmt": "2013-08-06 06:05:18", + "modified": "2013-08-18 01:37:38", + "title": "Внимание! Технические работы!", + "slug": "vnimanie-texnicheskie-raboty-2", + "excerpt": "", + "content_html": "

      Уважаемые пользователи!

      \r\n

      \r\n

      В связи с проведением плановых работ по апгрейду оборудования на площадке дата-центра 8 августа 2013 г. с 04:00 до 07:00 возможны кратковременные перерывы в работе проекта, продолжительностью до 15 минут.

      \r\n

      \r\n

      Приносим свои извинения за доставленные неудобства.

      ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 344, + "author_id": 1, + "date": "2013-05-09 10:26:24", + "date_gmt": "2013-05-09 06:26:24", + "modified": "2013-07-31 20:28:21", + "title": "С праздником Великой Победы!", + "slug": "s-prazdnikom-velikoj-pobedy", + "excerpt": "", + "content_html": "Дорогие ветераны!\r\nОт всей души поздравляем вас с Днем Победы! Мы испытываем гордость за тех, кто защитил нашу родину. Мы никогда не забудем погибших и тех, кто всем смертям назло остался в живых. В этот великий день, мы желаем всем хорошего здоровья, отличного настроения, благополучия в семье, мирного и солнечного неба над головой.\r\nС Великим Праздником Победы!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 335, + "author_id": 1, + "date": "2013-05-01 15:48:55", + "date_gmt": "2013-05-01 11:48:55", + "modified": "2013-05-04 16:16:43", + "title": "Внимание игрокам!", + "slug": "vnimanie-igrokam", + "excerpt": "", + "content_html": "По техническим причинам временно закрыты проекты: \"Иные Отражения: Глубина\" и \"Иные Отражения: Над Бездной\".\r\n\r\n \r\n\r\nПриносим свои извинения за доставленные неудобства.\r\n\r\n ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Над бездной", + "slug": "nad-bezdnoj" + }, + { + "name": "Глубина", + "slug": "glubina" + } + ], + "tags": [] + }, + { + "id": 179, + "author_id": 1, + "date": "2013-03-08 02:18:07", + "date_gmt": "2013-03-07 22:18:07", + "modified": "2013-03-29 14:35:44", + "title": "Поздравляем с 8 марта!", + "slug": "pozdravlyaem-s-8-marta", + "excerpt": "", + "content_html": "Всех представительниц прекрасной половины человечества поздравляем с весенним праздником, с женским днем. Пусть озаряются лучезарными улыбками ваши лица, каждый день дарит добро, заботу и ласку. Миллионы роз, тысячи мимоз — сотни цветов к вашим ногам.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 178, + "author_id": 1, + "date": "2013-02-23 05:08:13", + "date_gmt": "2013-02-23 01:08:13", + "modified": "2013-03-29 14:35:45", + "title": "С 23 февраля!", + "slug": "s-23-fevralya", + "excerpt": "", + "content_html": "Мужчины, поздравляем Вас с Днем Защитника Отечества!\r\n\r\nБудьте мужественными и благородными, чуткими и понимающими, сильными и смелыми. Пусть каждый новый день приносит вам понимание того, что день вчерашний был прожит не зря. Желаем вам здоровья, любви и несокрушимой силы воли. Пусть по жизни вам сопутствует удача и радость, а беды и горести обходят вас стороной.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 352, + "author_id": 1, + "date": "2013-01-18 01:34:39", + "date_gmt": "2013-01-17 21:34:39", + "modified": "2013-08-18 01:35:50", + "title": "Внимание! Ищем админов и гейм-мастеров!", + "slug": "vnimanie-ishhem-adminov-i-gejm-masterov", + "excerpt": "", + "content_html": "Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов:\r\n", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 170, + "author_id": 1, + "date": "2012-12-31 17:46:16", + "date_gmt": "2012-12-31 13:46:16", + "modified": "2013-03-29 14:35:09", + "title": "C наступающим Новым 2013 Годом!", + "slug": "c-nastupayushhim-novym-2013-godom", + "excerpt": "", + "content_html": "Дорогие друзья! От всей души поздравляем Вас с Новым Годом и Рождеством!\r\n\r\nЖелаем Вам и Вашим близким в Новом году здоровья, счастья, успеха в достижении поставленных целей и исполнения всех самых заветных желаний! Пусть 2013 год принесет Вам только лучшее, а все плохое останется в прошлом!\r\n\r\nС уважением, Коллектив проекта \"Иные Отражения\".", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 167, + "author_id": 1, + "date": "2012-05-09 09:23:40", + "date_gmt": "2012-05-09 05:23:40", + "modified": "2013-03-29 14:35:10", + "title": "C 67-летием Великой Победы!", + "slug": "c-67-letiem-velikoj-pobedy", + "excerpt": "", + "content_html": "Дорогие ветераны Великой Отечественной войны!\r\nСердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям!\r\nПусть День 9 мая прибавит новые силы пережившим войну, напомнит молодым, сколько жизней отдано за свободу нашей Родины, как надо любить и защищать свое Отечество!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 163, + "author_id": 1, + "date": "2012-03-08 04:17:48", + "date_gmt": "2012-03-08 00:17:48", + "modified": "2013-03-29 14:35:13", + "title": "С праздником 8 марта!", + "slug": "s-prazdnikom-8-marta", + "excerpt": "", + "content_html": "Дорогие наши женщины! Поздравляем вас с праздником 8 марта!\r\nПусть реальность для вас будет лучше, чем самая красивая мечта! Пусть в вашей душе всегда царят счастье и гармония! Пусть весна принесет вам любовь!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 161, + "author_id": 1, + "date": "2012-02-23 04:15:50", + "date_gmt": "2012-02-23 00:15:50", + "modified": "2013-03-29 14:35:16", + "title": "С Днем защитника Отечества!", + "slug": "s-dnem-zashhitnika-otechestva", + "excerpt": "", + "content_html": "Поздравляем с 23 февраля тех, кто по духу и по профессии является защитником Отечества. Поздравляем тех, кто в лихую минуту встанет на защиту своей родины России. Тех, кто встанет на защиту слабого. Поздравляем Воина, Героя и Мужчину!!! С праздником, пусть удача сопутствует Вам во всем!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 152, + "author_id": 1, + "date": "2012-01-01 00:27:00", + "date_gmt": "2011-12-31 20:27:00", + "modified": "2013-03-29 14:35:17", + "title": "С наступающим Новым 2012 годом!", + "slug": "152", + "excerpt": "", + "content_html": "Поздравляем вас с Новым годом! Пусть ваша жизнь будет красочной, дом - гостеприимным, пусть будут вашими верными спутниками будут везение и любовь! Пусть сбудутся все ваши мечты и желания! Пусть он принесет вам только яркие, незабываемые впечатления, удачу в делах и блестящие победы!\r\n\r\nС Новым 2012 годом!!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [ + { + "name": "2012", + "slug": "2012" + }, + { + "name": "новый год", + "slug": "novyj-god" + } + ] + }, + { + "id": 144, + "author_id": 1, + "date": "2011-07-20 14:30:52", + "date_gmt": "2011-07-20 10:30:52", + "modified": "2013-07-31 23:03:39", + "title": "СПАСИТЕ ЖИЗНЬ ВАДИМУ РУДЧЕНКО", + "slug": "spasite-zhizn-vadimu-rudchenko", + "excerpt": "", + "content_html": "

      \r\n

      СПАСИТЕ ЖИЗНЬ ВАДИМУ РУДЧЕНКО

      \r\n", + "categories": [ + { + "name": "На правах рекламы", + "slug": "reklama" + }, + { + "name": "Наши друзья", + "slug": "nashi-druzya" + } + ], + "tags": [] + }, + { + "id": 120, + "author_id": 1, + "date": "2011-05-12 17:27:53", + "date_gmt": "2011-05-12 13:27:53", + "modified": "2013-03-29 14:34:35", + "title": "Здравствуй посетитель!", + "slug": "zdravstvuj-posetitel", + "excerpt": "", + "content_html": "

      Приветствую тебя на нашем сайте!

      \r\nПриглашаем тебя в мир увлекательных форумных ролевых игр по мотивам фантастических миров цикла \"Дозоры\" Сергея Лукьяненко и Владмира Васильева, \"Хроники Амбера\" Роджера Желязны,\"Киндрет - Кровные братья\" Алексея Пехова и многих других!\r\n\r\nВыбирай мир, который тебе понравится, регистрируйся, играй, получай удовольствие!\r\n\r\nПо любым вопросам Вы можете обратиться в ЛС ГеймМастеру Кейран!\r\n\r\n\r\n\r\n\r\nС уважением, администрация проекта \"Иные Отражениия\"!\r\n", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 109, + "author_id": 1, + "date": "2011-05-09 00:00:55", + "date_gmt": "2011-05-08 20:00:55", + "modified": "2013-03-29 14:34:36", + "title": "C днём 66 годовщины Великой Победы!", + "slug": "c-dnyom-66-godovshhiny-velikoj-pobedy", + "excerpt": "", + "content_html": "Уважаемые Ветераны Великой Отечественной Войны, от лица немногих, тех кто понимает что это за Праздник, и какой ценой далась Великая Победа искренне прошу у Вас прощения за современное поколение! Спасибо Вам, за то что вы сделали. Спасибо Вам, Ветераны, за Победу!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 104, + "author_id": 1, + "date": "2011-03-07 23:51:27", + "date_gmt": "2011-03-07 19:51:27", + "modified": "2013-03-29 14:34:36", + "title": "С 8 марта!", + "slug": "s-8-marta", + "excerpt": "", + "content_html": "Желаю счастья и любви.\r\nОни дороже всех подарков.\r\nИ пусть все сбудутся мечты\r\nВ прекрасный день - 8 Марта!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 91, + "author_id": 1, + "date": "2011-02-26 00:24:42", + "date_gmt": "2011-02-25 20:24:42", + "modified": "2013-03-29 14:34:36", + "title": "26.02.2011, Встретимся?)", + "slug": "26-02-2011-vstretimsya", + "excerpt": "", + "content_html": "Поступило предложение, подкупающее своей новизной)\r\n\r\nВ общем, как оказалось, многие друг друга давненько уже не видели и хотели бы собраться. Эту идею мы поддержали)\r\nЭто будет НЕ так, как делали на Новый год: мы не снимаем все кафе.\r\nНо если кто-то хочет кого-то увидеть - приходите, мы будем только рады. Я договорилась на кальяны))\r\n\r\nВниманию желающих:\r\nВстречаемся в 15.00 в тупике на м. Электрозаводская, а оттуда идем в Кнефи.\r\nЖдем опаздывающих 20 минут.\r\n\r\n\r\nМой номер, если что - +79250038771.\r\nНомер Askory - +79636407971.\r\n\r\nАх да, список тех, кто собирается вот", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 95, + "author_id": 1, + "date": "2011-02-23 00:48:39", + "date_gmt": "2011-02-22 20:48:39", + "modified": "2013-03-29 14:34:37", + "title": "С 23 февраля!", + "slug": "95", + "excerpt": "", + "content_html": "

      Защита Родины - привилегия и обязанность настоящих мужчин! Семья - это маленькая частичка Родины, которую вам приходится защищать! Знайте, что за вашей спиной мы чувствуем спокойствие и уверенность в завтрашнем дне и в дне сегодняшнем! С праздником вас!

      ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 87, + "author_id": 1, + "date": "2010-12-31 23:51:13", + "date_gmt": "2010-12-31 19:51:13", + "modified": "2013-03-29 14:33:44", + "title": "Поздравляем с наступающим Новым 2011 Годом!", + "slug": "pozdravlyaem-s-nastupayushhim-novym-2011-godom", + "excerpt": "", + "content_html": "Администрация проекта \"Иные Отражения\" поздравляет своих пользователей с наступающим Новым 2011 Годом и желает всем Вам здоровья, счастья и удачи в новом году, пускай сбудутся все Ваши сокровенные желания и мечты, а окружать Вас будет феерический хоровод смеха и веселья!!\r\n\r\n\r\nС уважением, Администрация проекта \"Иные Отражения\"!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 79, + "author_id": 1, + "date": "2010-12-20 01:26:58", + "date_gmt": "2010-12-19 21:26:58", + "modified": "2013-03-29 14:33:45", + "title": "Джазовый ансамбль \"НаКануне\"", + "slug": "dzhazovyj-ansambl-nakanune-2", + "excerpt": "", + "content_html": "Ансамбль проверенного временем джаза со скромным названием \"НаКануне\". Родился жарким и дымным летом 2010 года. Из множества любимых стилей (от свинга до фанки-фьюжн) музыканты ансамбля выделяют для себя бразильский вокальный джаз (Жобим, Донато, Фонсека, Менескаль, Жильберто...) и американский хард-боп (Ли Морган, Д.Гордон, Д.Хендерсон, У.Шортер...).\r\n\r\nС июня нынешнего года в ансамбле играют:\r\n\r\nВ.Филатов - барабаны\r\n\r\nЕ.Тамарченко - гитара\r\n\r\nА.Трояновский - контрабас, бас-гитара\r\n\r\nА.Канунов - саксофоны\r\n\r\nМила Горюнова - вокал\r\n\r\nАлёна Чеботарёва - флейта\r\n\r\nприглашает любителей джаза на свои концерты. Подробная информация тут", + "categories": [ + { + "name": "На правах рекламы", + "slug": "reklama" + }, + { + "name": "Наши друзья", + "slug": "nashi-druzya" + } + ], + "tags": [] + }, + { + "id": 68, + "author_id": 1, + "date": "2010-06-10 01:21:47", + "date_gmt": "2010-06-09 21:21:47", + "modified": "2013-03-29 14:33:47", + "title": "Внимание! Технические работы!", + "slug": "vnimanie-texnicheskie-raboty", + "excerpt": "", + "content_html": "Уважаемые пользователи! Сегодня, 10 июня 2010 года планируется проведение технических работ, что вызовет недоступность ресурса продолжительностью около 30 минут. О точном времени проведения работ будет объявлено дополнительно. Приносим Вам извинения за доставленные неудобства!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 65, + "author_id": 1, + "date": "2010-04-05 19:44:26", + "date_gmt": "2010-04-05 15:44:26", + "modified": "2013-03-29 14:33:48", + "title": "Реклама...", + "slug": "reklama", + "excerpt": "", + "content_html": "

      Итак, проводим небольшой опрос:

      \r\n

      [poll id=\"2\"]

      ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + }, + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 60, + "author_id": 1, + "date": "2010-04-05 13:58:50", + "date_gmt": "2010-04-05 09:58:50", + "modified": "2013-03-29 14:33:49", + "title": "Обьявление администрации!", + "slug": "obyavlenie-administracii", + "excerpt": "", + "content_html": "Администрация проекта \"Иные Отражения\" приглашает гейм-мастеров ( можно как с опытом, так и без) для \" поднятия\" крупных проектов по циклам \"Хроники Амбера\" Р. Желязны, \"Киндрет. Кровные братья\" и другие.\r\n\r\nОбращаться в  ICQ 207259578 или на admins@anotherreflections.ru", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 50, + "author_id": 1, + "date": "2010-01-14 00:51:20", + "date_gmt": "2010-01-13 20:51:20", + "modified": "2013-03-29 14:33:54", + "title": "Итак, есть предложение встретиться!", + "slug": "itak-est-predlozhenie-vstretitsya", + "excerpt": "", + "content_html": "Собственно, есть предложение встретиться 23 января, с целью посидеть, потрепаться и конечно же выпить!\r\n\r\nВ качестве места встречи предлагается Кружка на метро \"Площадь Революции\", соответственно место встречи - центр зала в метро.\r\n\r\nНу а время встречи - 15 часов пополудни.\r\n\r\nПриглашаются и ожидаются все желающие!\r\n\r\nВстреча ВКонтакте - Сходка Сумерек\r\n\r\nПо всем вопросам Вы можете обратиться по телефону: 8-916-821-28-62 или 8-909-926-39-58 - Strik~er", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 48, + "author_id": 1, + "date": "2010-01-07 01:36:50", + "date_gmt": "2010-01-06 21:36:50", + "modified": "2013-03-29 14:33:55", + "title": "C рождеством Христовым!", + "slug": "c-rozhdestvom-xristovym", + "excerpt": "", + "content_html": "

      C рождеством Христовым поздравляем!\r\nНа Руси сей праздник почитаем.\r\nПосле многодневного поста\r\nЖдём, когда взойдёт звезда Христа.\r\nНаконец родился наш Спаситель,\r\nМноговековый Мудрец учитель!\r\nИ в сочельник празднует народ\r\nВ ожидании когда придёт\r\nИисус Христос на землю нашу,\r\nЧтоб спасти людей и сделать краше,\r\nС истинного сбившихся пути\r\nПо дороге праведной вести.\r\nБыл Христос однажды на Земле,\r\nНам оставил память о себе.\r\nЕсли в вашем сердце он живёт,\r\nТо хранит и счастье вам несёт.\r\nВам желаем помнить а Рождество -\r\nПусть двадцать столетий уж прошло,-\r\nКак Христос всем людям помогал,\r\nБлага, как мы вам сейчас, желал!

      ", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 43, + "author_id": 1, + "date": "2009-12-31 13:38:28", + "date_gmt": "2009-12-31 09:38:28", + "modified": "2013-03-29 14:31:21", + "title": "С наступающим Новым 2010 Годом!", + "slug": "s-nastupayushhim-novym-2010-godom", + "excerpt": "", + "content_html": "\"С\r\n\r\nУважаемые пользователи и гости нашего ресурса!\r\n\r\nАдминистрация корпорации \"Иные Отражения\" поздравляет Вас с наступающим Новым 2010 Годом, и желает Вам в эту ночь исполнения всех Ваших желаний, что-бы Новый Год принёс Вам горы счастья, удачи и любви! Пускай год тигра принесёт в Вашу жизнь только радостные моменты, а Ваши уста не покидает смех и улыбка!\r\n\r\nС годом Тигра поздравляю!\r\nИ спешу тебе пожелать:\r\nДенег чтоб с его приходом\r\nБыло некуда девать.\r\nНовых взлетов без паденья,\r\nЧтоб счастливой жизнью жить,\r\nИ всего, чего за деньги\r\nСам не сможешь ты купить.\r\nСмеха, радости, удачи,\r\nВерной дружбы и добра,\r\nИскренней любви горячей\r\nИ сердечного тепла!\r\n\r\nС наступающим, 2010 годом!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 40, + "author_id": 1, + "date": "2009-12-25 15:02:40", + "date_gmt": "2009-12-25 11:02:40", + "modified": "2013-03-29 14:31:22", + "title": "Скоро новый год,и малыши как никогда ждут его!", + "slug": "skoro-novyj-godi-malyshi-kak-nikogda-zhdut-ego", + "excerpt": "", + "content_html": "Хотите устроить ребенку праздник?\r\nСамый волшебный праздник, который любят все без исключения, и взрослые и дети. Любят зеленую нарядную елку, разноцветные огни, пушистый снег за окном, зимние забавы и радости, новогодние чудеса. И конечно, любимые и долгожданные новогодние гости - Дед Мороз и Снегурочка. Игры, веселые песни, заводные танцы, зажигание огней на ёлочке, загадки и мешок с подарками! Ура! Да здравствует наш любимый чудесный Новый Год!\r\n\r\nЗаходите!", + "categories": [ + { + "name": "На правах рекламы", + "slug": "reklama" + } + ], + "tags": [] + }, + { + "id": 36, + "author_id": 1, + "date": "2009-11-07 03:21:54", + "date_gmt": "2009-11-06 23:21:54", + "modified": "2013-03-29 14:31:23", + "title": "Технические неисправности", + "slug": "texnicheskie-neispravnosti", + "excerpt": "", + "content_html": "Приносим извинения за недоступность сервера с 17:00 по московскому времени до 2 часов 7 ноября в связи с физической поломкой сервера.", + "categories": [ + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 30, + "author_id": 1, + "date": "2009-10-30 23:37:19", + "date_gmt": "2009-10-30 19:37:19", + "modified": "2013-03-29 14:31:27", + "title": "Итак! Внимание!", + "slug": "itak-vnimanie", + "excerpt": "", + "content_html": "Место проведения торжества - Кнефи\r\n\r\nМесто встречи: м. Электрозаводская\r\n\r\nВремя встречи: 15-00\r\n\r\nПриглашаем и ждём всех!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 27, + "author_id": 1, + "date": "2009-10-28 11:13:33", + "date_gmt": "2009-10-28 07:13:33", + "modified": "2013-03-29 14:31:28", + "title": "Приносим извинения!", + "slug": "prinosim-izvineniya", + "excerpt": "", + "content_html": "Уважаемые пользователи!\r\n\r\nПриносим извинения за недоступность нашего сайта 28.10.2009 с 01:00 до 08:00 в связи с те хническими работами на площадке провайдера.", + "categories": [ + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 24, + "author_id": 1, + "date": "2009-10-02 00:33:55", + "date_gmt": "2009-10-01 20:33:55", + "modified": "2013-03-29 14:31:29", + "title": "Приносим свои извинения!", + "slug": "prinosim-svoi-izvineniya", + "excerpt": "", + "content_html": "Приносим свои извинения за недоступность проекта с 0 часов до 18:00 1 октября этого года в связи с техническими работами на площадке интернет провайдера.", + "categories": [ + { + "name": "Технические", + "slug": "tech_news" + } + ], + "tags": [] + }, + { + "id": 18, + "author_id": 1, + "date": "2009-09-15 14:49:48", + "date_gmt": "2009-09-15 10:49:48", + "modified": "2013-03-29 14:31:31", + "title": "День рождения!", + "slug": "den-rozhdeniya", + "excerpt": "", + "content_html": "Итак,  снова приближаеться наш день рождения. Если брать точнее, то наступает он 17 сентября, однако по сложившейся традиции отмечаем мы его в начале - середине октября.\r\n\r\nБудем ли праздновать в этом году?", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 13, + "author_id": 1, + "date": "2009-09-14 12:01:43", + "date_gmt": "2009-09-14 08:01:43", + "modified": "2013-03-29 14:31:33", + "title": "Дорогие пользователи и игроки проекта Иные Отражения!", + "slug": "dorogie-polzovateli-i-igroki-proekta-inye-otrazheniya", + "excerpt": "", + "content_html": "Дорогие пользователи и игроки проекта Иные Отражения!\r\nЯ, как основной технический администратор данного проекта приношу Вам свои искренние извинения за столь длительный простой нашего проекта. В настоящее время в связи с обстоятельствами непреодолимой силы я принял решение развернуть наш проект на резервной системе, в связи с чем некоторое время до окончательного переезда на основной сервер могут наблюдаться проблемы с скоростью загрузки данных.\r\nТакже убедительная просьба при нахождение неисправностей в работе проекта обращаться по электронной почте:admins@anotherreflections.ru\r\n\r\nС уважением, Strik~er", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 11, + "author_id": 1, + "date": "2009-09-14 12:00:21", + "date_gmt": "2009-09-14 08:00:21", + "modified": "2013-03-29 14:31:37", + "title": "Переезд проекта на новый сервер!", + "slug": "pereezd-proekta-na-novyj-server", + "excerpt": "", + "content_html": "В связи с осуществлением переезда проекта на другой сервер возможна его полная недоступность с 6 на неопределённое время!\r\n\r\nАдминистрация приносит извинения за доставленные неудобства.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 8, + "author_id": 1, + "date": "2009-09-14 11:58:13", + "date_gmt": "2009-09-14 07:58:13", + "modified": "2013-03-29 14:31:38", + "title": "Спасибо за праздник!", + "slug": "spasibo-za-prazdnik", + "excerpt": "", + "content_html": "Администрация проекта сердечно благодарит всех, кто пришёл на наш день рождения и выражает огромную признательность за чудесную атмосферу, созданную вами!", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + }, + { + "id": 6, + "author_id": 1, + "date": "2009-09-14 11:55:13", + "date_gmt": "2009-09-14 07:55:13", + "modified": "2013-03-29 14:31:39", + "title": "Наш день рождения!", + "slug": "nash-den-rozhdeniya", + "excerpt": "", + "content_html": "Итак, приближается наш День Рождения! И соответственно его празднование! Пройдёт оно в городе Москва, в небезизвестном кафе Кнефи 11 октября. Начало в 15 часов. Приглашаються все желающие! С возникшими вопросами можете обращаться к Strik~er`у или Spellsinger`у.", + "categories": [ + { + "name": "Общие новости", + "slug": "obshhie-novosti" + } + ], + "tags": [] + } + ], + "pages": [ + { + "id": 137, + "author_id": 1, + "date": "2011-05-18 00:50:11", + "modified": "2014-07-14 00:10:31", + "title": "О нас", + "slug": "o-nas", + "content_html": "

      Ролевая группа \"Иные Отражения\"

      \r\nРолевая группа \"Иные Отражения\", первоначально известная как \"Иные Миры\" была образована в 2006 году, и певоначально включала в себя двух создателей-администраторов: Дмитрий \"Strik~er\" Гусев и Александр \"SpellSinger\" Шутов.\r\n\r\nВпоследствии в 2007 году ролевая группа  \"Иные Миры\" объединилась с проектом \"Отражения\" и изменила своё название на \"Иные Отражения\".", + "menu_order": 1 + }, + { + "id": 339, + "author_id": 1, + "date": "2013-07-09 13:29:47", + "modified": "2025-06-07 02:31:08", + "title": "Наши друзья", + "slug": "nashi-druzya", + "content_html": "

      ООО \"АйТи Решения\" предоставляет полный спектр IT услуг на территории Москвы и Московской области, как частным лицам, так и представителям бизнеса. Мы способствуем развитию Вашего бизнеса и достижению самых смелых результатов!

      \n

      \"ООО\"

      \n\n\n

      \n", + "menu_order": 2 + }, + { + "id": 124, + "author_id": 1, + "date": "2011-05-18 00:27:35", + "modified": "2014-07-14 00:12:09", + "title": "Сумерки Дозоров", + "slug": "inye-otrazheniya-sumerki-dozorov", + "content_html": "

      Иные Отражения: Сумерки Дозоров

      \r\n

       

      \r\nДействие ролевой игры происходит в мире, описанным Сергеем Лукьяненко и Владимиром Васильевым в цикле \"Дозоры\".\r\n\r\nНа ночных улицах - опасно. Но речь не о преступниках и маньяках. На ночных улицах живет другая опасность - те, что называют себя Иными. Вампиры и оборотни, колдуньи и ведьмаки. Те, кто выходит на охоту, когда садится солнце. Те, чья сила велика, с кем не справиться обычным оружием. Но по следу \"ночных охотников\" веками следуют охотники другие - Ночной дозор. Они сражаются с порождениями мрака и побеждают их, но при этом свято блюдут древний Договор, заключенный между Светлыми и Темными...\r\n\r\n\"Ночные охотники\" городских улиц. Вампиры и оборотим, колдуньи и ведьмаки. Те, что живут в часы, когда опускается на землю мгла. Те, что веками противостоят силам белых магов. Потому что понимают - равновесие должно быть соблюдено. Потому что понимают- Тьма для этого мира не менее важна, чем Свет.\r\n\r\n \r\n\r\nГлавная страница\r\nСтраница регистрации\r\nИнициация\r\nРегистрация в ролевой игре\r\n\r\nГейм-мастер Игры: Кейран\r\nАдминистраторы: Sumrak, Strik~er.\r\n\r\n ", + "menu_order": 3 + }, + { + "id": 132, + "author_id": 1, + "date": "2011-05-18 00:40:47", + "modified": "2014-07-14 00:12:19", + "title": "Амбер - янтарное королевство", + "slug": "inye-otrazheniya-amber-yantarnoe-korolevstvo", + "content_html": "Тест\r\n\r\n ", + "menu_order": 4 + }, + { + "id": 130, + "author_id": 1, + "date": "2011-05-18 00:39:40", + "modified": "2014-07-14 00:12:27", + "title": "Киндрет - кровные братья", + "slug": "inye-otrazheniya-kindret-krovnye-bratya", + "content_html": "«Киндрэт. Кровные братья» — первая книга цикла Киндрэт известных российских писателей Алексея Пехова, Елены Бычковой и Натальи Турчаниновой, рассказывающая о жизни кланов вампиров. В цикл романов по миру ночной Столицы вошли 4 книги: «Кровные братья», «Колдун из клана смерти», «Основатель», «Новые боги».\r\n
      Они управляют миром с начала времен, втягивая человечество в бесконечные войны. Они едины лишь в одном — жажде власти и могущества. В древности им поклонялись как богам. Их кровь священна и проклята, и приносит бессмертие. А также особый дар, который дает полную реализацию скрытым способностям человека… В современной Столице их существование считают мифом или страшной сказкой, но они продолжают жить среди нас. Их время — ночь. КИНДРЭТ приходят, чтобы убивать, ненавидеть, мстить. Что люди смогут противопоставить им?..\r\n\r\n 
      \r\nГлавная страница\r\n\r\nСтраница регистрации\r\n\r\nКвенты игроков", + "menu_order": 5 + }, + { + "id": 378, + "author_id": 1, + "date": "2013-10-06 02:59:22", + "modified": "2014-07-14 00:12:33", + "title": "Ренессанс", + "slug": "renessans", + "content_html": "Иные Отражения: Ренессанс\r\n\r\nДействие ролевой игры происходит в мире, описанным Сергеем Лукьяненко и Владимиром Васильевым в цикле \"Дозоры\".\r\n\r\nНа ночных улицах - опасно. Но речь не о преступниках и маньяках. На ночных улицах живет другая опасность - те, что называют себя Иными. Вампиры и оборотни, колдуньи и ведьмаки. Те, кто выходит на охоту, когда садится солнце. Те, чья сила велика, с кем не справиться обычным оружием. Но по следу \"ночных охотников\" веками следуют охотники другие - Ночной дозор. Они сражаются с порождениями мрака и побеждают их, но при этом свято блюдут древний Договор, заключенный между Светлыми и Темными...\r\n\r\n\"Ночные охотники\" городских улиц. Вампиры и оборотим, колдуньи и ведьмаки. Те, что живут в часы, когда опускается на землю мгла. Те, что веками противостоят силам белых магов. Потому что понимают - равновесие должно быть соблюдено. Потому что понимают- Тьма для этого мира не менее важна, чем Свет.\r\n\r\n \r\n\r\nГлавная страница\r\nСтраница регистрации\r\nРегистрация в ролевой игре\r\n\r\nГейм-мастер Игры: Кейран\r\n\r\n ", + "menu_order": 6 + } + ] +} \ No newline at end of file diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..053308a --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,16 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import sitemap from '@astrojs/sitemap'; + +export default defineConfig({ + site: 'https://anotherreflections.ru', + trailingSlash: 'always', + build: { + format: 'directory', + }, + integrations: [ + sitemap({ + filter: (page) => !page.includes('/feed'), + }), + ], +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..dccb523 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5037 @@ +{ + "name": "anotherreflections-website-v2", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "anotherreflections-website-v2", + "version": "0.1.0", + "dependencies": { + "@astrojs/rss": "^4.0.12", + "@astrojs/sitemap": "^3.6.0", + "astro": "^6.3.6", + "sanitize-html": "^2.17.0" + }, + "devDependencies": { + "@types/sanitize-html": "^2.16.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/compiler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-4.0.0.tgz", + "integrity": "sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.9.1.tgz", + "integrity": "sha512-1pWuARqYom/TzuU3+0ZugsTrKlUydWKuULmDqSMTuonY+9IRDUEGKX/8PXQ1nBxRq3w85uGtd9q9SXfqEldMIQ==", + "license": "MIT", + "dependencies": { + "picomatch": "^4.0.4" + } + }, + "node_modules/@astrojs/markdown-remark": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.1.2.tgz", + "integrity": "sha512-caXZ4Dc2St2dW8luEg22GlP0gupLdztCTQE4EzZOxW1pqWXz9mbeJEuHUkgDYcKWW8tjIHkydYDhWLVoxJ327Q==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.9.1", + "@astrojs/prism": "4.0.2", + "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", + "retext-smartypants": "^6.2.0", + "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" + } + }, + "node_modules/@astrojs/prism": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", + "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/rss": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.18.tgz", + "integrity": "sha512-wc5DwKlbTEdgVAWnHy8krFTeQ42t1v/DJqeq5HtulYK3FYHE4krtRGjoyhS3eXXgfdV6Raoz2RU3wrMTFAitRg==", + "license": "MIT", + "dependencies": { + "fast-xml-parser": "^5.5.7", + "piccolore": "^0.1.3", + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.2.tgz", + "integrity": "sha512-PqkzkcZTb5ICiyIR8VoKbIAP/laNRXi5tw616N1Ckk+40oNB8Can1AzVV56lrbC5GKSZFCyJYUVYqVivMisvpA==", + "license": "MIT", + "dependencies": { + "sitemap": "^9.0.0", + "stream-replace-string": "^2.0.0", + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.2.tgz", + "integrity": "sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.4.0", + "dset": "^3.1.4", + "is-docker": "^4.0.0", + "is-wsl": "^3.1.1", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz", + "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@clack/core": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.3.1.tgz", + "integrity": "sha512-fT1qHVGAag4IEkrupZ6lRRbNCs1vS9P01KB/sG8zKgvUztbYtFBtQpjSITNwooDZ83tpsPzP0mRNs1/KVszCRA==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.4.0.tgz", + "integrity": "sha512-S0My7XPGIgpRWMDG8uRqalbgT+a6FmCUdOW+HaIOVVpUPHOb7RrpvjTjiODadKp06fsrVDJZlIzc6yCTp4AnxA==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.3.1", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", + "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", + "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", + "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", + "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", + "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", + "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", + "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", + "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", + "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", + "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", + "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", + "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", + "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", + "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", + "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", + "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", + "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", + "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", + "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", + "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", + "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", + "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", + "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", + "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", + "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.1.0.tgz", + "integrity": "sha512-jLJtSJeuFffqX6/inRE1zqU5aFv2hrszvYgq3OjbAgFRZiWv7abKMDdQzYxuSDfmUPQozZvI/kuy6VMTvnvqTQ==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.1.0", + "@shikijs/types": "4.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.1.0.tgz", + "integrity": "sha512-YquhawCUgaBfhsS72e2Y/dI59gCBNPHu3fEO/tvLaXrTssxZrY5ddjtNLTwndrMgPo8b3IscE+xoICDzpTmlFQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.1.0.tgz", + "integrity": "sha512-axLpjVs45YBvvINa+dJF+NPW+KtFkNXsFr4SDw2BMj9GdeMnGxVB9PQb2xXlJYovslt/nz6giedAyOANkfc7hg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.1.0", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.1.0.tgz", + "integrity": "sha512-nwOMruEkbgdZfQ/b8CgpNBVOpvG1k0N5tbmgiFeqsan401+x3ILqlzZJowSla4Agmq4hG2Uf2wh5jLTEhR8VSg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.1.0.tgz", + "integrity": "sha512-zx2/2Uwj2q9X3KSyYREEhXO23xBw5WUhP4orK2lE4r+t9JGITmEe0JH+wPmJhqHpOT2bRRs6lAL945+LDvOAGw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.1.0.tgz", + "integrity": "sha512-emCcTnUM7yO2wltYbaxm+yLvcCI4+h8XBKc4KmJ7EZUXoSGjcCHifkI//R4OFit9ewpg7H2/9tjOuXrT2v/Knw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.1.0.tgz", + "integrity": "sha512-3EQWX54fMpniOrDblzAhiwiJwpiTMW6+B9DWyUd9ska483tbayFYuw47UxwuPknI31bKnySfVQ/QW+jFL4rFdA==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", + "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/sanitize-html": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.1.tgz", + "integrity": "sha512-n9wjs8bCOTyN/ynwD8s/nTcTreIHB1vf31vhLMGqUPNHaweKC4/fAl4Dj+hUlCTKYgm4P3k83fmiFfzkZ6sgMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^10.1" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "license": "ISC" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astro": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/astro/-/astro-6.3.6.tgz", + "integrity": "sha512-lM30gGI/iASK9Z1WQVnBBYzxVwDv8slkXbJOF7FNJdZQeBrFETpsQvYoLRupM/adt2ObP5hkYAWEeCjofoqlRw==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^4.0.0", + "@astrojs/internal-helpers": "0.9.1", + "@astrojs/markdown-remark": "7.1.2", + "@astrojs/telemetry": "3.3.2", + "@capsizecss/unpack": "^4.0.0", + "@clack/prompts": "^1.1.0", + "@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", + "dset": "^3.1.4", + "es-module-lexer": "^2.0.0", + "esbuild": "^0.27.3", + "flattie": "^1.1.1", + "fontace": "~0.4.1", + "get-tsconfig": "5.0.0-beta.4", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "js-yaml": "^4.1.1", + "jsonc-parser": "^3.3.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.4", + "rehype": "^13.0.2", + "semver": "^7.7.4", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "svgo": "^4.0.1", + "tinyclip": "^0.1.12", + "tinyexec": "^1.0.4", + "tinyglobby": "^0.2.15", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.4", + "unist-util-visit": "^5.1.0", + "unstorage": "^1.17.5", + "vfile": "^6.0.3", + "vite": "^7.3.2", + "vitefu": "^1.1.2", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^22.0.0", + "zod": "^4.3.6" + }, + "bin": { + "astro": "bin/astro.mjs" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.34.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">= 18" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "license": "MIT" + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", + "integrity": "sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fast-xml-builder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz", + "integrity": "sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.2.0", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.3.0", + "xml-naming": "^0.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.2" + } + }, + "node_modules/fontkitten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz", + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "license": "MIT", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "5.0.0-beta.4", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", + "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-docker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/launder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/launder/-/launder-1.7.1.tgz", + "integrity": "sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==", + "license": "MIT", + "dependencies": { + "dayjs": "^1.11.7" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", + "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", + "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.0.tgz", + "integrity": "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.0.tgz", + "integrity": "sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.4", + "p-timeout": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rollup": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", + "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.4", + "@rollup/rollup-android-arm64": "4.60.4", + "@rollup/rollup-darwin-arm64": "4.60.4", + "@rollup/rollup-darwin-x64": "4.60.4", + "@rollup/rollup-freebsd-arm64": "4.60.4", + "@rollup/rollup-freebsd-x64": "4.60.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", + "@rollup/rollup-linux-arm-musleabihf": "4.60.4", + "@rollup/rollup-linux-arm64-gnu": "4.60.4", + "@rollup/rollup-linux-arm64-musl": "4.60.4", + "@rollup/rollup-linux-loong64-gnu": "4.60.4", + "@rollup/rollup-linux-loong64-musl": "4.60.4", + "@rollup/rollup-linux-ppc64-gnu": "4.60.4", + "@rollup/rollup-linux-ppc64-musl": "4.60.4", + "@rollup/rollup-linux-riscv64-gnu": "4.60.4", + "@rollup/rollup-linux-riscv64-musl": "4.60.4", + "@rollup/rollup-linux-s390x-gnu": "4.60.4", + "@rollup/rollup-linux-x64-gnu": "4.60.4", + "@rollup/rollup-linux-x64-musl": "4.60.4", + "@rollup/rollup-openbsd-x64": "4.60.4", + "@rollup/rollup-openharmony-arm64": "4.60.4", + "@rollup/rollup-win32-arm64-msvc": "4.60.4", + "@rollup/rollup-win32-ia32-msvc": "4.60.4", + "@rollup/rollup-win32-x64-gnu": "4.60.4", + "@rollup/rollup-win32-x64-msvc": "4.60.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/sanitize-html": { + "version": "2.17.4", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.4.tgz", + "integrity": "sha512-2HW7v2ol/uAM7sX4hbD8Z59OGWmAPrvjL8E71UWlBcj6m+kcF6ilQBLny+cIgY214QJeJT5tQuxKKqX0SQqjGQ==", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^10.1.0", + "is-plain-object": "^5.0.0", + "launder": "^1.7.1", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/sanitize-html/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/shiki": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.1.0.tgz", + "integrity": "sha512-l/ABZPUR5v70jI10EzqfMS/I96vjSGv2y0ihUV+WYFzv0EfvW4s54m0Lg8wCrrL+2IkwBzFTuxkZjPf8b2NX9Q==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.1.0", + "@shikijs/engine-javascript": "4.1.0", + "@shikijs/engine-oniguruma": "4.1.0", + "@shikijs/langs": "4.1.0", + "@shikijs/themes": "4.1.0", + "@shikijs/types": "4.1.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz", + "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==", + "license": "MIT", + "dependencies": { + "@types/node": "^24.9.2", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.4.1" + }, + "bin": { + "sitemap": "dist/esm/cli.js" + }, + "engines": { + "node": ">=20.19.5", + "npm": ">=10.8.2" + } + }, + "node_modules/smol-toml": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stream-replace-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", + "license": "MIT" + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strnum": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyclip": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.12.tgz", + "integrity": "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", + "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz", + "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.1.0", + "ofetch": "^1.5.1", + "ohash": "^2.0.11" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", + "license": "MIT", + "peer": true, + "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" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8e32d44 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "anotherreflections-website-v2", + "type": "module", + "version": "0.1.0", + "private": true, + "engines": { + "node": ">=22.12.0" + }, + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro", + "migrate": "node scripts/migrate-wp.mjs" + }, + "dependencies": { + "astro": "^6.3.6", + "@astrojs/rss": "^4.0.12", + "@astrojs/sitemap": "^3.6.0", + "sanitize-html": "^2.17.0" + }, + "devDependencies": { + "@types/sanitize-html": "^2.16.0" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..7f48a94 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..f157bd1 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,9 @@ + + + + diff --git a/scripts/migrate-wp.mjs b/scripts/migrate-wp.mjs new file mode 100644 index 0000000..4e9c13e --- /dev/null +++ b/scripts/migrate-wp.mjs @@ -0,0 +1,144 @@ +#!/usr/bin/env node +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.resolve(__dirname, '..'); +const EXPORT_PATH = path.join(ROOT, '_wp-export.json'); +const POSTS_DIR = path.join(ROOT, 'src/content/posts'); +const PAGES_DIR = path.join(ROOT, 'src/content/pages'); + +const data = JSON.parse(fs.readFileSync(EXPORT_PATH, 'utf8')); + +fs.mkdirSync(POSTS_DIR, { recursive: true }); +fs.mkdirSync(PAGES_DIR, { recursive: true }); + +const decodeEntities = (s) => s + .replace(/ /g, ' ') + .replace(/«/g, '«') + .replace(/»/g, '»') + .replace(/—/g, '—') + .replace(/–/g, '–') + .replace(/…/g, '…') + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/'/g, "'") + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + +const htmlToMd = (html) => { + if (!html) return ''; + let s = html; + // images + s = s.replace(/]*?src=["']([^"']+)["'][^>]*?(?:alt=["']([^"']*)["'])?[^>]*?\/?>/gi, + (_, src, alt) => `![${alt || ''}](${src})`); + // links + s = s.replace(/]*?href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi, + (_, href, text) => `[${text.replace(/<[^>]+>/g,'').trim()}](${href})`); + // bold + s = s.replace(/<(strong|b)\b[^>]*>([\s\S]*?)<\/\1>/gi, '**$2**'); + // italic + s = s.replace(/<(em|i)\b[^>]*>([\s\S]*?)<\/\1>/gi, '*$2*'); + // blockquote + s = s.replace(/]*>([\s\S]*?)<\/blockquote>/gi, + (_, inner) => inner.trim().split(/\n+/).map(l => '> ' + l.trim()).join('\n')); + // lists + s = s.replace(/]*>([\s\S]*?)<\/li>/gi, '- $1\n'); + s = s.replace(/<\/?(ul|ol)[^>]*>/gi, '\n'); + // paragraphs + s = s.replace(/]*>/gi, '\n\n'); + s = s.replace(/<\/p>/gi, '\n\n'); + // br + s = s.replace(//gi, '\n'); + // strip remaining span/div etc. + s = s.replace(/<\/?(?:span|div|font|center)[^>]*>/gi, ''); + // any remaining tags — drop + s = s.replace(/<[^>]+>/g, ''); + // entities + s = decodeEntities(s); + // collapse 3+ blank lines + s = s.replace(/\n{3,}/g, '\n\n'); + return s.trim(); +}; + +const yamlEscape = (s) => { + if (s == null) return '""'; + const str = String(s); + if (/^[\w\-.,!?:; À-￿()«»—–"']+$/.test(str) && !/^[-?:&*!|>%@`]/.test(str)) { + return JSON.stringify(str); + } + return JSON.stringify(str); +}; + +const fmtFrontmatter = (obj) => { + const lines = ['---']; + for (const [k, v] of Object.entries(obj)) { + if (v === undefined || v === null) continue; + if (Array.isArray(v)) { + if (v.length === 0) continue; + lines.push(`${k}:`); + v.forEach(item => lines.push(` - ${yamlEscape(item)}`)); + } else if (typeof v === 'object') { + lines.push(`${k}:`); + Object.entries(v).forEach(([kk, vv]) => lines.push(` ${kk}: ${yamlEscape(vv)}`)); + } else { + lines.push(`${k}: ${yamlEscape(v)}`); + } + } + lines.push('---'); + return lines.join('\n'); +}; + +const authorsMap = Object.fromEntries(data.authors.map(a => [a.id, a.display_name || a.login])); + +// Posts +let postCount = 0; +for (const p of data.posts) { + const fm = { + title: p.title, + pubDate: p.date.replace(' ', 'T') + '+03:00', + updatedDate: p.modified && p.modified !== p.date ? p.modified.replace(' ','T') + '+03:00' : undefined, + slug: p.slug, + legacyId: p.id, + author: authorsMap[p.author_id] || 'admin', + categories: p.categories.map(c => c.name), + categorySlugs: p.categories.map(c => c.slug), + tags: p.tags.map(t => t.name), + description: (htmlToMd(p.excerpt) || htmlToMd(p.content_html)).slice(0, 200).replace(/\s+/g,' ').trim(), + }; + const body = htmlToMd(p.content_html); + const out = `${fmtFrontmatter(fm)}\n\n${body}\n`; + const safeName = p.slug.replace(/[^a-z0-9а-я\-]/gi, '-').slice(0, 80) || `post-${p.id}`; + fs.writeFileSync(path.join(POSTS_DIR, `${safeName}.md`), out, 'utf8'); + postCount++; +} + +// Pages +let pageCount = 0; +for (const pg of data.pages) { + const fm = { + title: pg.title, + slug: pg.slug, + legacyId: pg.id, + menuOrder: pg.menu_order, + pubDate: pg.date.replace(' ', 'T') + '+03:00', + updatedDate: pg.modified !== pg.date ? pg.modified.replace(' ','T') + '+03:00' : undefined, + }; + const body = htmlToMd(pg.content_html); + const out = `${fmtFrontmatter(fm)}\n\n${body}\n`; + const safeName = pg.slug.replace(/[^a-z0-9а-я\-]/gi, '-').slice(0, 80) || `page-${pg.id}`; + fs.writeFileSync(path.join(PAGES_DIR, `${safeName}.md`), out, 'utf8'); + pageCount++; +} + +// Categories dump (для построения /category// страниц и фидов) +const catsOut = data.categories.map(c => ({ + name: c.name, slug: c.slug, description: c.description, count: c.count +})); +fs.writeFileSync(path.join(ROOT, 'src/content/_categories.json'), JSON.stringify(catsOut, null, 2), 'utf8'); + +console.log(`Migrated ${postCount} posts → ${POSTS_DIR}`); +console.log(`Migrated ${pageCount} pages → ${PAGES_DIR}`); +console.log(`Categories: ${catsOut.length} → src/content/_categories.json`); diff --git a/src/consts.ts b/src/consts.ts new file mode 100644 index 0000000..e6f7b85 --- /dev/null +++ b/src/consts.ts @@ -0,0 +1,36 @@ +export const SITE_TITLE = 'Иные Отражения'; +export const SITE_DESCRIPTION = 'Ролевой проект по современной фантастике. Дозоры С. Лукьяненко, Амбер Р. Желязны, А. Пехов.'; +export const SITE_URL = 'https://anotherreflections.ru'; +export const SITE_AUTHOR = 'Иные Отражения'; +export const SITE_LANG = 'ru-RU'; + +/** + * RSS-фид отдаёт только посты с pubDate >= этой даты. + * Сценарий: фид подключают как источник в IPB RSS Importer; чтобы старый + * архив 2009–2015 не залился в форумы одной волной, отрезаем по cutover. + * Изменить дату → перезапустить build. + */ +export const RSS_CUTOFF = new Date("2026-05-20T00:00:00+03:00"); + +/** Сколько постов в RSS-фиде максимум (после фильтра cutoff). */ +export const RSS_LIMIT = 30; + +/** Внешние ссылки на форумы и связанные проекты. */ +export const FORUMS = [ + { name: 'Главный форум', url: 'https://forum.anotherreflections.ru/' }, + { name: 'Сумерки Дозоров', url: 'https://sumerki.anotherreflections.ru/' }, + { name: 'Ренессанс', url: 'https://renessans.anotherreflections.ru/' }, + { name: 'Амбер', url: 'https://amber.anotherreflections.ru/' }, + { name: 'Киндрет', url: 'https://kindret.anotherreflections.ru/' }, + { name: 'Warhammer 40k', url: 'https://warhammer40k.anotherreflections.ru/' }, + { name: 'Над бездной', url: 'https://bezdna.anotherreflections.ru/' }, + { name: 'Глубина', url: 'https://deep.anotherreflections.ru/' }, +]; + +/** Главное меню. */ +export const MAIN_NAV = [ + { label: 'Главная', href: '/' }, + { label: 'О нас', href: '/o-nas/' }, + { label: 'Наши друзья', href: '/nashi-druzya/' }, + { label: 'Форумы', href: '#forums' }, +]; diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 0000000..8f76d7c --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,33 @@ +import { defineCollection, z } from 'astro:content'; +import { glob } from 'astro/loaders'; + +const posts = defineCollection({ + loader: glob({ pattern: '**/*.md', base: './src/content/posts' }), + schema: z.object({ + title: z.string(), + pubDate: z.coerce.date(), + updatedDate: z.coerce.date().optional(), + slug: z.string(), + legacyId: z.union([z.string(), z.number()]).optional(), + author: z.string().default('Иные Отражения'), + categories: z.array(z.string()).default([]), + categorySlugs: z.array(z.string()).default([]), + tags: z.array(z.string()).default([]), + description: z.string().default(''), + }), +}); + +const pages = defineCollection({ + loader: glob({ pattern: '**/*.md', base: './src/content/pages' }), + schema: z.object({ + title: z.string(), + slug: z.string(), + legacyId: z.union([z.string(), z.number()]).optional(), + menuOrder: z.coerce.number().optional(), + pubDate: z.coerce.date().optional(), + updatedDate: z.coerce.date().optional(), + description: z.string().optional(), + }), +}); + +export const collections = { posts, pages }; diff --git a/src/content/_categories.json b/src/content/_categories.json new file mode 100644 index 0000000..6a68cce --- /dev/null +++ b/src/content/_categories.json @@ -0,0 +1,62 @@ +[ + { + "name": "Общие новости", + "slug": "obshhie-novosti", + "description": "", + "count": 44 + }, + { + "name": "Технические", + "slug": "tech_news", + "description": "", + "count": 9 + }, + { + "name": "На правах рекламы", + "slug": "reklama", + "description": "", + "count": 8 + }, + { + "name": "Наши друзья", + "slug": "nashi-druzya", + "description": "", + "count": 3 + }, + { + "name": "Ролевые игры", + "slug": "rolgames", + "description": "", + "count": 2 + }, + { + "name": "Над бездной", + "slug": "nad-bezdnoj", + "description": "", + "count": 1 + }, + { + "name": "Глубина", + "slug": "glubina", + "description": "", + "count": 1 + }, + { + "name": "Фан-арт", + "slug": "fun_art", + "description": "", + "count": 0 + }, + { + "name": "Сумерки Дозоров", + "slug": "sumerkidozorov", + "description": "", + "count": 0 + }, + { + "name": "Клуб Лукьяненко", + "slug": "lukianenkoclub", + "description": "", + "count": 0 + } +] \ No newline at end of file diff --git a/src/content/pages/inye-otrazheniya-amber-yantarnoe-korolevstvo.md b/src/content/pages/inye-otrazheniya-amber-yantarnoe-korolevstvo.md new file mode 100644 index 0000000..489df48 --- /dev/null +++ b/src/content/pages/inye-otrazheniya-amber-yantarnoe-korolevstvo.md @@ -0,0 +1,10 @@ +--- +title: "Амбер - янтарное королевство" +slug: "inye-otrazheniya-amber-yantarnoe-korolevstvo" +legacyId: "132" +menuOrder: "4" +pubDate: "2011-05-18T00:40:47+03:00" +updatedDate: "2014-07-14T00:12:19+03:00" +--- + +Тест diff --git a/src/content/pages/inye-otrazheniya-kindret-krovnye-bratya.md b/src/content/pages/inye-otrazheniya-kindret-krovnye-bratya.md new file mode 100644 index 0000000..7d63ccb --- /dev/null +++ b/src/content/pages/inye-otrazheniya-kindret-krovnye-bratya.md @@ -0,0 +1,18 @@ +--- +title: "Киндрет - кровные братья" +slug: "inye-otrazheniya-kindret-krovnye-bratya" +legacyId: "130" +menuOrder: "5" +pubDate: "2011-05-18T00:39:40+03:00" +updatedDate: "2014-07-14T00:12:27+03:00" +--- + +«Киндрэт. Кровные братья» — первая книга цикла Киндрэт известных российских писателей Алексея Пехова, Елены Бычковой и Натальи Турчаниновой, рассказывающая о жизни кланов вампиров. В цикл романов по миру ночной Столицы вошли 4 книги: «Кровные братья», «Колдун из клана смерти», «Основатель», «Новые боги». +> Они управляют миром с начала времен, втягивая человечество в бесконечные войны. Они едины лишь в одном — жажде власти и могущества. В древности им поклонялись как богам. Их кровь священна и проклята, и приносит бессмертие. А также особый дар, который дает полную реализацию скрытым способностям человека… В современной Столице их существование считают мифом или страшной сказкой, но они продолжают жить среди нас. Их время — ночь. КИНДРЭТ приходят, чтобы убивать, ненавидеть, мстить. Что люди смогут противопоставить им?.. +> +> +[Главная страница](http://kindret.anotherreflections.ru/) + +[Страница регистрации](http://kindret.anotherreflections.ru/index.php?act=Reg&CODE=00) + +[Квенты игроков](http://kindret.anotherreflections.ru/?showforum=31) diff --git a/src/content/pages/inye-otrazheniya-sumerki-dozorov.md b/src/content/pages/inye-otrazheniya-sumerki-dozorov.md new file mode 100644 index 0000000..a27a673 --- /dev/null +++ b/src/content/pages/inye-otrazheniya-sumerki-dozorov.md @@ -0,0 +1,31 @@ +--- +title: "Сумерки Дозоров" +slug: "inye-otrazheniya-sumerki-dozorov" +legacyId: "124" +menuOrder: "3" +pubDate: "2011-05-18T00:27:35+03:00" +updatedDate: "2014-07-14T00:12:09+03:00" +--- + +**Иные Отражения: Сумерки Дозоров** + + + + + + +**Действие ролевой игры происходит в мире, описанным Сергеем Лукьяненко и Владимиром Васильевым в цикле "Дозоры".** + +На ночных улицах - опасно. Но речь не о преступниках и маньяках. На ночных улицах живет другая опасность - те, что называют себя Иными. Вампиры и оборотни, колдуньи и ведьмаки. Те, кто выходит на охоту, когда садится солнце. Те, чья сила велика, с кем не справиться обычным оружием. Но по следу "ночных охотников" веками следуют охотники другие - Ночной дозор. Они сражаются с порождениями мрака и побеждают их, но при этом свято блюдут древний Договор, заключенный между Светлыми и Темными... + +"Ночные охотники" городских улиц. Вампиры и оборотим, колдуньи и ведьмаки. Те, что живут в часы, когда опускается на землю мгла. Те, что веками противостоят силам белых магов. Потому что понимают - равновесие должно быть соблюдено. Потому что понимают- Тьма для этого мира не менее важна, чем Свет. + + + +[Главная страница](http://sumerki.anotherreflections.ru/) +[Страница регистрации](http://sumerki.anotherreflections.ru/index.php?act=Reg&CODE=00) +[Инициация](http://sumerki.anotherreflections.ru/iniciaciya-f8-iniciaciya-t2-p-460.html) +[Регистрация в ролевой игре](http://sumerki.anotherreflections.ru/forum-f0-posl-soobwenie-t1809-l.html) + +Гейм-мастер Игры: [Кейран](http://sumerki.anotherreflections.ru/prosmotr-profilya-505.html) +Администраторы: [Sumrak](http://sumerki.anotherreflections.ru/prosmotr-profilya-1.html), [Strik~er](http://sumerki.anotherreflections.ru/prosmotr-profilya-2.html). diff --git a/src/content/pages/nashi-druzya.md b/src/content/pages/nashi-druzya.md new file mode 100644 index 0000000..34f4db1 --- /dev/null +++ b/src/content/pages/nashi-druzya.md @@ -0,0 +1,12 @@ +--- +title: "Наши друзья" +slug: "nashi-druzya" +legacyId: "339" +menuOrder: "2" +pubDate: "2013-07-09T13:29:47+03:00" +updatedDate: "2025-06-07T02:31:08+03:00" +--- + +[ООО "АйТи Решения"](https://hhivp.com) предоставляет полный спектр IT услуг на территории Москвы и Московской области, как частным лицам, так и представителям бизнеса. Мы способствуем развитию Вашего бизнеса и достижению самых смелых результатов! + +[![](http://sysadmingroup.ru/sag.jpg)](http://sysadmingroup.ru/sag.jpg) diff --git a/src/content/pages/o-nas.md b/src/content/pages/o-nas.md new file mode 100644 index 0000000..1452048 --- /dev/null +++ b/src/content/pages/o-nas.md @@ -0,0 +1,15 @@ +--- +title: "О нас" +slug: "o-nas" +legacyId: "137" +menuOrder: "1" +pubDate: "2011-05-18T00:50:11+03:00" +updatedDate: "2014-07-14T00:10:31+03:00" +--- + +**Ролевая группа "Иные Отражения"** + + +Ролевая группа "Иные Отражения", первоначально известная как "Иные Миры" была образована в 2006 году, и певоначально включала в себя двух создателей-администраторов: Дмитрий "Strik~er" Гусев и Александр "SpellSinger" Шутов. + +Впоследствии в 2007 году ролевая группа  "Иные Миры" объединилась с проектом "Отражения" и изменила своё название на "Иные Отражения". diff --git a/src/content/pages/renessans.md b/src/content/pages/renessans.md new file mode 100644 index 0000000..d585a70 --- /dev/null +++ b/src/content/pages/renessans.md @@ -0,0 +1,24 @@ +--- +title: "Ренессанс" +slug: "renessans" +legacyId: "378" +menuOrder: "6" +pubDate: "2013-10-06T02:59:22+03:00" +updatedDate: "2014-07-14T00:12:33+03:00" +--- + +**Иные Отражения: Ренессанс** + +**Действие ролевой игры происходит в мире, описанным Сергеем Лукьяненко и Владимиром Васильевым в цикле "Дозоры".** + +На ночных улицах - опасно. Но речь не о преступниках и маньяках. На ночных улицах живет другая опасность - те, что называют себя Иными. Вампиры и оборотни, колдуньи и ведьмаки. Те, кто выходит на охоту, когда садится солнце. Те, чья сила велика, с кем не справиться обычным оружием. Но по следу "ночных охотников" веками следуют охотники другие - Ночной дозор. Они сражаются с порождениями мрака и побеждают их, но при этом свято блюдут древний Договор, заключенный между Светлыми и Темными... + +"Ночные охотники" городских улиц. Вампиры и оборотим, колдуньи и ведьмаки. Те, что живут в часы, когда опускается на землю мгла. Те, что веками противостоят силам белых магов. Потому что понимают - равновесие должно быть соблюдено. Потому что понимают- Тьма для этого мира не менее важна, чем Свет. + + + +[Главная страница](http://renessans.anotherreflections.ru/) +[Страница регистрации](http://renessans.anotherreflections.ru/index.php?act=Reg&CODE=00) +[Регистрация в ролевой игре](http://renessans.anotherreflections.ru/?showforum=45) + +Гейм-мастер Игры: [Кейран](http://renessans.anotherreflections.ru/?showuser=2) diff --git a/src/content/posts/11.md b/src/content/posts/11.md new file mode 100644 index 0000000..193c3dd --- /dev/null +++ b/src/content/posts/11.md @@ -0,0 +1,31 @@ +--- +title: "Кто мы?" +pubDate: "2013-08-25T03:15:01+03:00" +updatedDate: "2013-10-06T02:05:52+03:00" +slug: "11" +legacyId: "365" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Мы - Ролевая группа \"Иные Отражения\". Ролевая группа \"Иные Отражения\", первоначально известная как \"Иные Миры\" была образована в 2006 году, и первоначально включала в себя двух создателей-администрат" +--- + +Мы - Ролевая группа "Иные Отражения". +Ролевая группа "Иные Отражения", первоначально известная как "Иные Миры" была образована в 2006 году, и первоначально включала в себя двух создателей-администраторов: Дмитрий "Strik~er" Гусев и Александр "SpellSinger" Шутов. Впоследствии в 2007 году ролевая группа "Иные Миры" объединилась с проектом "Отражения" и изменила своё название на "Иные Отражения". +Сейчас мы представляем Вашему вниманию следующие проекты: + + + - [Иные Отражения: Сумерки Дозоров](http://sumerki.anotherreflections.ru) - мир, описанный в цикле "Дозоры" С. Лукьяненко и В. Васильева. + + - [Иные Отражения: Ренессанс](http://renessans.anotherreflections.ru/) - мир Дозоров маленького городка. + + + +Также в разработке находятся следующие миры: + + + - [Иные Отражения: Амбер-Янтарное королевство](http://amber.anotherreflections.ru/) -  мир, описанный Р. Желязны в цикле Амбер. + + - [Иные Отражения: Киндрет - кровные братья](http://kindret.anotherreflections.ru) - мир по циклу А. Пехова, рассказывающий о жизни кланов вампиров ночной столицы. diff --git a/src/content/posts/152.md b/src/content/posts/152.md new file mode 100644 index 0000000..a579a08 --- /dev/null +++ b/src/content/posts/152.md @@ -0,0 +1,20 @@ +--- +title: "С наступающим Новым 2012 годом!" +pubDate: "2012-01-01T00:27:00+03:00" +updatedDate: "2013-03-29T14:35:17+03:00" +slug: "152" +legacyId: "152" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +tags: + - "2012" + - "новый год" +description: "Поздравляем вас с Новым годом! Пусть ваша жизнь будет красочной, дом - гостеприимным, пусть будут вашими верными спутниками будут везение и любовь! Пусть сбудутся все ваши мечты и желания! Пусть он пр" +--- + +Поздравляем вас с Новым годом! Пусть ваша жизнь будет красочной, дом - гостеприимным, пусть будут вашими верными спутниками будут везение и любовь! Пусть сбудутся все ваши мечты и желания! Пусть он принесет вам только яркие, незабываемые впечатления, удачу в делах и блестящие победы! + +С Новым 2012 годом!! diff --git a/src/content/posts/26-02-2011-vstretimsya.md b/src/content/posts/26-02-2011-vstretimsya.md new file mode 100644 index 0000000..7784a76 --- /dev/null +++ b/src/content/posts/26-02-2011-vstretimsya.md @@ -0,0 +1,29 @@ +--- +title: "26.02.2011, Встретимся?)" +pubDate: "2011-02-26T00:24:42+03:00" +updatedDate: "2013-03-29T14:34:36+03:00" +slug: "26-02-2011-vstretimsya" +legacyId: "91" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Поступило предложение, подкупающее своей новизной) В общем, как оказалось, многие друг друга давненько уже не видели и хотели бы собраться. Эту идею мы поддержали) Это будет НЕ так, как делали на" +--- + +Поступило предложение, подкупающее своей новизной) + +В общем, как оказалось, многие друг друга давненько уже не видели и хотели бы собраться. Эту идею мы поддержали) +Это будет НЕ так, как делали на Новый год: мы не снимаем все кафе. +Но если кто-то хочет кого-то увидеть - приходите, мы будем только рады. Я договорилась на кальяны)) + +Вниманию желающих: +Встречаемся в 15.00 в тупике на м. Электрозаводская, а оттуда идем в Кнефи. +Ждем опаздывающих 20 минут. + + +Мой номер, если что - +79250038771. +Номер Askory - +79636407971. + +Ах да, список тех, кто собирается [вот](http://vkontakte.ru/event24225253) diff --git a/src/content/posts/95.md b/src/content/posts/95.md new file mode 100644 index 0000000..20e5d8f --- /dev/null +++ b/src/content/posts/95.md @@ -0,0 +1,15 @@ +--- +title: "С 23 февраля!" +pubDate: "2011-02-23T00:48:39+03:00" +updatedDate: "2013-03-29T14:34:37+03:00" +slug: "95" +legacyId: "95" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Защита Родины - привилегия и обязанность настоящих мужчин! Семья - это маленькая частичка Родины, которую вам приходится защищать! Знайте, что за вашей спиной мы чувствуем спокойствие и уверенность в" +--- + +Защита Родины - привилегия и обязанность настоящих мужчин! Семья - это маленькая частичка Родины, которую вам приходится защищать! Знайте, что за вашей спиной мы чувствуем спокойствие и уверенность в завтрашнем дне и в дне сегодняшнем! С праздником вас! diff --git a/src/content/posts/avtorskaya-prezentaciya-knigi-shestoj-dozor-sergeya-lukyanenko-v-novyj-knizhnyj-.md b/src/content/posts/avtorskaya-prezentaciya-knigi-shestoj-dozor-sergeya-lukyanenko-v-novyj-knizhnyj-.md new file mode 100644 index 0000000..224b3d8 --- /dev/null +++ b/src/content/posts/avtorskaya-prezentaciya-knigi-shestoj-dozor-sergeya-lukyanenko-v-novyj-knizhnyj-.md @@ -0,0 +1,27 @@ +--- +title: "Авторская презентация книги «Шестой Дозор» Сергея Лукьяненко в «Новый книжный» (Москва)" +pubDate: "2014-12-02T22:59:22+03:00" +updatedDate: "2014-12-27T23:08:40+03:00" +slug: "avtorskaya-prezentaciya-knigi-shestoj-dozor-sergeya-lukyanenko-v-novyj-knizhnyj-moskva" +legacyId: "422" +author: "admin" +categories: + - "Общие новости" + - "На правах рекламы" + - "Наши друзья" +categorySlugs: + - "obshhie-novosti" + - "reklama" + - "nashi-druzya" +description: "[caption id=\"\" align=\"aligncenter\" width=\"200\"]![](http://lukianenko.ru/userdata/i/cover-books/2014/shestoi-dozor-cover_m.jpg) Авторская презентация книги «Шестой Дозор» Сергея Лукьяненко в «Новый кни" +--- + +[caption id="" align="aligncenter" width="200"]![](http://lukianenko.ru/userdata/i/cover-books/2014/shestoi-dozor-cover_m.jpg) Авторская презентация книги «Шестой Дозор» Сергея Лукьяненко в «Новый книжный» (Москва)[/caption] + + + +6 декабря 2014 года пройдет презентация книги «[Шестой Дозор](http://lukianenko.ru/works_rus/356.html)» Сергея Лукьяненко в магазине «Новый книжный» по адресу м. Сухаревская, Мал. Сухаревская пл., 12, ТЦ «Садовая галерея» (1-й этаж). Начало в 14:00. Вход свободный. Приезжайте заранее! Участники презентации смогут приобрести книгу, пообщаться с писателем, сфотографироваться и взять автограф. + +С 6 декабря 2014 года продажи книги стартуют по всей стране! Предварительный заказ[электронной книги «Шестой Дозор»](http://www.litres.ru/sergey-lukyanenko/shestoy-dozor/&lfrom=147) можно сделать в ЛитРес. + +Источник: [http://www.lukianenko.ru/news_rus/373.html](http://www.lukianenko.ru/news_rus/373.html) diff --git a/src/content/posts/c-67-letiem-velikoj-pobedy.md b/src/content/posts/c-67-letiem-velikoj-pobedy.md new file mode 100644 index 0000000..054af43 --- /dev/null +++ b/src/content/posts/c-67-letiem-velikoj-pobedy.md @@ -0,0 +1,17 @@ +--- +title: "C 67-летием Великой Победы!" +pubDate: "2012-05-09T09:23:40+03:00" +updatedDate: "2013-03-29T14:35:10+03:00" +slug: "c-67-letiem-velikoj-pobedy" +legacyId: "167" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Дорогие ветераны Великой Отечественной войны! Сердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям! Пусть" +--- + +Дорогие ветераны Великой Отечественной войны! +Сердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям! +Пусть День 9 мая прибавит новые силы пережившим войну, напомнит молодым, сколько жизней отдано за свободу нашей Родины, как надо любить и защищать свое Отечество! diff --git a/src/content/posts/c-dnyom-66-godovshhiny-velikoj-pobedy.md b/src/content/posts/c-dnyom-66-godovshhiny-velikoj-pobedy.md new file mode 100644 index 0000000..be3d4e9 --- /dev/null +++ b/src/content/posts/c-dnyom-66-godovshhiny-velikoj-pobedy.md @@ -0,0 +1,15 @@ +--- +title: "C днём 66 годовщины Великой Победы!" +pubDate: "2011-05-09T00:00:55+03:00" +updatedDate: "2013-03-29T14:34:36+03:00" +slug: "c-dnyom-66-godovshhiny-velikoj-pobedy" +legacyId: "109" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "**Уважаемые Ветераны Великой Отечественной Войны, от лица немногих, тех кто понимает что это за Праздник, и какой ценой далась Великая Победа искренне прошу у Вас прощения за современное поколени" +--- + +**Уважаемые Ветераны Великой Отечественной Войны, от лица немногих, тех кто понимает что это за Праздник, и какой ценой далась Великая Победа искренне прошу у Вас прощения за современное поколение! Спасибо Вам, за то что вы сделали. Спасибо Вам, Ветераны, за Победу!** diff --git a/src/content/posts/c-nastupayushhim-novym-2013-godom.md b/src/content/posts/c-nastupayushhim-novym-2013-godom.md new file mode 100644 index 0000000..11d58d2 --- /dev/null +++ b/src/content/posts/c-nastupayushhim-novym-2013-godom.md @@ -0,0 +1,19 @@ +--- +title: "C наступающим Новым 2013 Годом!" +pubDate: "2012-12-31T17:46:16+03:00" +updatedDate: "2013-03-29T14:35:09+03:00" +slug: "c-nastupayushhim-novym-2013-godom" +legacyId: "170" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Дорогие друзья! От всей души поздравляем Вас с Новым Годом и Рождеством! Желаем Вам и Вашим близким в Новом году здоровья, счастья, успеха в достижении поставленных целей и исполнения всех самых за" +--- + +Дорогие друзья! От всей души поздравляем Вас с Новым Годом и Рождеством! + +Желаем Вам и Вашим близким в Новом году здоровья, счастья, успеха в достижении поставленных целей и исполнения всех самых заветных желаний! Пусть 2013 год принесет Вам только лучшее, а все плохое останется в прошлом! + +С уважением, Коллектив проекта "Иные Отражения". diff --git a/src/content/posts/c-nastupayushhim-novym-2014-godom.md b/src/content/posts/c-nastupayushhim-novym-2014-godom.md new file mode 100644 index 0000000..ddbec3f --- /dev/null +++ b/src/content/posts/c-nastupayushhim-novym-2014-godom.md @@ -0,0 +1,18 @@ +--- +title: "C наступающим Новым 2014 Годом!" +pubDate: "2013-12-31T19:17:12+03:00" +slug: "c-nastupayushhim-novym-2014-godom" +legacyId: "384" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "От лица администрации и от себя лично поздравляю всех с Новым годом! Желаю всем счастья, здоровья, сбытия всех Ваших мечт, финансового и душевного спокойствия, искорки в глазах и успехов в выполнении" +--- + +От лица администрации и от себя лично поздравляю всех с Новым годом! Желаю всем счастья, здоровья, сбытия всех Ваших мечт, финансового и душевного спокойствия, искорки в глазах и успехов в выполнении всех Ваших начинаний.Постарайтесь забыть все то плохое, что у Вас может быть случилось, помните, что свою жизнь Вы делаете и сами, а значит нужно стремиться к самому лучшему! Еще раз всех с праздником, до встречи уже в Новом году!) + + + +Strik~er & Anotherreflections.ru diff --git a/src/content/posts/c-nastupayushhim-novym-2015-godom-i-rozhdestvom.md b/src/content/posts/c-nastupayushhim-novym-2015-godom-i-rozhdestvom.md new file mode 100644 index 0000000..04fdd26 --- /dev/null +++ b/src/content/posts/c-nastupayushhim-novym-2015-godom-i-rozhdestvom.md @@ -0,0 +1,28 @@ +--- +title: "C наступающим Новым 2015 Годом и Рождеством!" +pubDate: "2014-12-30T20:07:11+03:00" +slug: "c-nastupayushhim-novym-2015-godom-i-rozhdestvom" +legacyId: "432" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "[![](http://anotherreflections.ru/wp-content/uploads/2014/12/NY-baner-300x51.png)](http://anotherreflections.ru/wp-content/uploads/2014/12/NY-baner.png) Подходит к своему завершению 2014 год." +--- + +[![](http://anotherreflections.ru/wp-content/uploads/2014/12/NY-baner-300x51.png)](http://anotherreflections.ru/wp-content/uploads/2014/12/NY-baner.png) + + + +Подходит к своему завершению 2014 год. В жизни каждого из нас произошло много событий - ярких, запоминающихся, которые наполнили наши сердца радостью или принесли бесценный опыт. + +Горячо поздравляем Вас с наступающим Новым 2015 Годом и Рождеством! Пусть сбудутся все Ваши мечты и новый 2015 год принесёт Вам и Вашим родным и близким Радость и Процветание! Самое главное – не бояться перемен, добиваться поставленных целей и быть уверенными – каждый из нас идет правильной дорогой! + +Будьте счастливы в Новом году! Здоровья, любви, удачи всем Вам! + + + +С уважением, администрация + +проекта "Иные Отражения" diff --git a/src/content/posts/c-rozhdestvom-xristovym.md b/src/content/posts/c-rozhdestvom-xristovym.md new file mode 100644 index 0000000..e6eb171 --- /dev/null +++ b/src/content/posts/c-rozhdestvom-xristovym.md @@ -0,0 +1,34 @@ +--- +title: "C рождеством Христовым!" +pubDate: "2010-01-07T01:36:50+03:00" +updatedDate: "2013-03-29T14:33:55+03:00" +slug: "c-rozhdestvom-xristovym" +legacyId: "48" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "C рождеством Христовым поздравляем! На Руси сей праздник почитаем. После многодневного поста Ждём, когда взойдёт звезда Христа. Наконец родился наш Спаситель, Многовековый Мудрец учитель! И в со" +--- + +C рождеством Христовым поздравляем! +На Руси сей праздник почитаем. +После многодневного поста +Ждём, когда взойдёт звезда Христа. +Наконец родился наш Спаситель, +Многовековый Мудрец учитель! +И в сочельник празднует народ +В ожидании когда придёт +Иисус Христос на землю нашу, +Чтоб спасти людей и сделать краше, +С истинного сбившихся пути +По дороге праведной вести. +Был Христос однажды на Земле, +Нам оставил память о себе. +Если в вашем сердце он живёт, +То хранит и счастье вам несёт. +Вам желаем помнить а Рождество - +Пусть двадцать столетий уж прошло,- +Как Христос всем людям помогал, +Блага, как мы вам сейчас, желал! diff --git a/src/content/posts/data-vyxoda-prodolzheniya-dozorov.md b/src/content/posts/data-vyxoda-prodolzheniya-dozorov.md new file mode 100644 index 0000000..7e46abd --- /dev/null +++ b/src/content/posts/data-vyxoda-prodolzheniya-dozorov.md @@ -0,0 +1,18 @@ +--- +title: "Дата выхода продолжения Дозоров" +pubDate: "2014-10-20T23:04:55+03:00" +updatedDate: "2014-12-27T23:05:40+03:00" +slug: "data-vyxoda-prodolzheniya-dozorov" +legacyId: "424" +author: "admin" +categories: + - "Общие новости" + - "На правах рекламы" +categorySlugs: + - "obshhie-novosti" + - "reklama" +description: "Завершилось написание романа под рабочим названием «[Шестой Дозор](http://lukianenko.ru/works_rus/356.html)»! Ориентировочная дата появления книги в магазинах России – 06 декабря 2014 года. В ближайш" +--- + +Завершилось написание романа под рабочим названием «[Шестой Дозор](http://lukianenko.ru/works_rus/356.html)»! Ориентировочная дата появления книги в магазинах России – 06 декабря 2014 года. +В ближайших планах Сергея Лукьяненко, присутствие на фестивале фантастики "Созвездие Аю-Даг". diff --git a/src/content/posts/den-rozhdeniya.md b/src/content/posts/den-rozhdeniya.md new file mode 100644 index 0000000..e1b7078 --- /dev/null +++ b/src/content/posts/den-rozhdeniya.md @@ -0,0 +1,17 @@ +--- +title: "День рождения!" +pubDate: "2009-09-15T14:49:48+03:00" +updatedDate: "2013-03-29T14:31:31+03:00" +slug: "den-rozhdeniya" +legacyId: "18" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Итак, снова приближаеться наш день рождения. Если брать точнее, то наступает он 17 сентября, однако по сложившейся традиции отмечаем мы его в начале - середине октября. Будем ли праздновать в этом" +--- + +Итак,  снова приближаеться наш день рождения. Если брать точнее, то наступает он 17 сентября, однако по сложившейся традиции отмечаем мы его в начале - середине октября. + +Будем ли праздновать в этом году? diff --git a/src/content/posts/dorogie-polzovateli-i-igroki-proekta-inye-otrazheniya.md b/src/content/posts/dorogie-polzovateli-i-igroki-proekta-inye-otrazheniya.md new file mode 100644 index 0000000..9be14ee --- /dev/null +++ b/src/content/posts/dorogie-polzovateli-i-igroki-proekta-inye-otrazheniya.md @@ -0,0 +1,19 @@ +--- +title: "Дорогие пользователи и игроки проекта Иные Отражения!" +pubDate: "2009-09-14T12:01:43+03:00" +updatedDate: "2013-03-29T14:31:33+03:00" +slug: "dorogie-polzovateli-i-igroki-proekta-inye-otrazheniya" +legacyId: "13" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Дорогие пользователи и игроки проекта Иные Отражения! Я, как основной технический администратор данного проекта приношу Вам свои искренние извинения за столь длительный простой нашего проекта. В наст" +--- + +Дорогие пользователи и игроки проекта Иные Отражения! +Я, как основной технический администратор данного проекта приношу Вам свои искренние извинения за столь длительный простой нашего проекта. В настоящее время в связи с обстоятельствами непреодолимой силы я принял решение развернуть наш проект на резервной системе, в связи с чем некоторое время до окончательного переезда на основной сервер могут наблюдаться проблемы с скоростью загрузки данных. +Также убедительная просьба при нахождение неисправностей в работе проекта обращаться по электронной почте:admins@anotherreflections.ru + +С уважением, Strik~er diff --git a/src/content/posts/dzhazovyj-ansambl-nakanune-2.md b/src/content/posts/dzhazovyj-ansambl-nakanune-2.md new file mode 100644 index 0000000..30af11c --- /dev/null +++ b/src/content/posts/dzhazovyj-ansambl-nakanune-2.md @@ -0,0 +1,33 @@ +--- +title: "Джазовый ансамбль \"НаКануне\"" +pubDate: "2010-12-20T01:26:58+03:00" +updatedDate: "2013-03-29T14:33:45+03:00" +slug: "dzhazovyj-ansambl-nakanune-2" +legacyId: "79" +author: "admin" +categories: + - "На правах рекламы" + - "Наши друзья" +categorySlugs: + - "reklama" + - "nashi-druzya" +description: "Ансамбль проверенного временем джаза со скромным названием \"НаКануне\". Родился жарким и дымным летом 2010 года. Из множества любимых стилей (от свинга до фанки-фьюжн) музыканты ансамбля выделяют для с" +--- + +Ансамбль проверенного временем джаза со скромным названием "НаКануне". Родился жарким и дымным летом 2010 года. Из множества любимых стилей (от свинга до фанки-фьюжн) музыканты ансамбля выделяют для себя бразильский вокальный джаз (Жобим, Донато, Фонсека, Менескаль, Жильберто...) и американский хард-боп (Ли Морган, Д.Гордон, Д.Хендерсон, У.Шортер...). + +С июня нынешнего года в ансамбле играют: + +В.Филатов - барабаны + +Е.Тамарченко - гитара + +А.Трояновский - контрабас, бас-гитара + +А.Канунов - саксофоны + +Мила Горюнова - вокал + +Алёна Чеботарёва - флейта + +приглашает любителей джаза на свои концерты. Подробная информация [тут](http://vkontakte.ru/club22008896) diff --git a/src/content/posts/itak-est-predlozhenie-vstretitsya.md b/src/content/posts/itak-est-predlozhenie-vstretitsya.md new file mode 100644 index 0000000..ddcfa94 --- /dev/null +++ b/src/content/posts/itak-est-predlozhenie-vstretitsya.md @@ -0,0 +1,25 @@ +--- +title: "Итак, есть предложение встретиться!" +pubDate: "2010-01-14T00:51:20+03:00" +updatedDate: "2013-03-29T14:33:54+03:00" +slug: "itak-est-predlozhenie-vstretitsya" +legacyId: "50" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Собственно, есть предложение встретиться 23 января, с целью посидеть, потрепаться и конечно же выпить! В качестве места встречи предлагается Кружка на метро \"Площадь Революции\", соответственно мест" +--- + +Собственно, есть предложение встретиться 23 января, с целью посидеть, потрепаться и конечно же выпить! + +В качестве места встречи предлагается Кружка на метро "Площадь Революции", соответственно место встречи - центр зала в метро. + +Ну а время встречи - 15 часов пополудни. + +Приглашаются и ожидаются все желающие! + +Встреча ВКонтакте - [Сходка Сумерек](http://vkontakte.ru/event14521045) + +По всем вопросам Вы можете обратиться по телефону: 8-916-821-28-62 или 8-909-926-39-58 - Strik~er diff --git a/src/content/posts/itak-vnimanie.md b/src/content/posts/itak-vnimanie.md new file mode 100644 index 0000000..e2fcc8f --- /dev/null +++ b/src/content/posts/itak-vnimanie.md @@ -0,0 +1,21 @@ +--- +title: "Итак! Внимание!" +pubDate: "2009-10-30T23:37:19+03:00" +updatedDate: "2013-03-29T14:31:27+03:00" +slug: "itak-vnimanie" +legacyId: "30" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Место проведения торжества - Кнефи Место встречи: м. Электрозаводская Время встречи: 15-00 Приглашаем и ждём всех!" +--- + +Место проведения торжества - Кнефи + +Место встречи: м. Электрозаводская + +Время встречи: 15-00 + +Приглашаем и ждём всех! diff --git a/src/content/posts/nash-den-rozhdeniya.md b/src/content/posts/nash-den-rozhdeniya.md new file mode 100644 index 0000000..f135dfd --- /dev/null +++ b/src/content/posts/nash-den-rozhdeniya.md @@ -0,0 +1,15 @@ +--- +title: "Наш день рождения!" +pubDate: "2009-09-14T11:55:13+03:00" +updatedDate: "2013-03-29T14:31:39+03:00" +slug: "nash-den-rozhdeniya" +legacyId: "6" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Итак, приближается наш День Рождения! И соответственно его празднование! Пройдёт оно в городе Москва, в небезизвестном кафе [Кнефи](http://knefi.ru/) 11 октября. Начало в 15 часов. Приглашаються все ж" +--- + +Итак, приближается наш День Рождения! И соответственно его празднование! Пройдёт оно в городе Москва, в небезизвестном кафе [Кнефи](http://knefi.ru/) 11 октября. Начало в 15 часов. Приглашаються все желающие! С возникшими вопросами можете обращаться к Strik~er`у или Spellsinger`у. diff --git a/src/content/posts/novaya-kniga-sergeya-lukyanenko-uchastkovyj.md b/src/content/posts/novaya-kniga-sergeya-lukyanenko-uchastkovyj.md new file mode 100644 index 0000000..f1555d0 --- /dev/null +++ b/src/content/posts/novaya-kniga-sergeya-lukyanenko-uchastkovyj.md @@ -0,0 +1,14 @@ +--- +title: "Новая книга Сергея Лукьяненко «Участковый»" +pubDate: "2014-07-24T01:11:07+03:00" +slug: "novaya-kniga-sergeya-lukyanenko-uchastkovyj" +legacyId: "408" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "**«[Участковый](http://lukianenko.ru/editions_rus/350.html)»** — это третья книга из соавторского цикла «Дозоры» написанная совместно с Алексом де Клемешье. События в книге происходят в Сибири 1972-го" +--- + +**«[Участковый](http://lukianenko.ru/editions_rus/350.html)»** — это третья книга из соавторского цикла «Дозоры» написанная совместно с Алексом де Клемешье. События в книге происходят в Сибири 1972-го года. diff --git a/src/content/posts/obyavlenie-administracii.md b/src/content/posts/obyavlenie-administracii.md new file mode 100644 index 0000000..c989920 --- /dev/null +++ b/src/content/posts/obyavlenie-administracii.md @@ -0,0 +1,17 @@ +--- +title: "Обьявление администрации!" +pubDate: "2010-04-05T13:58:50+03:00" +updatedDate: "2013-03-29T14:33:49+03:00" +slug: "obyavlenie-administracii" +legacyId: "60" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Администрация проекта \"Иные Отражения\" приглашает гейм-мастеров ( можно как с опытом, так и без) для \" поднятия\" крупных проектов по циклам \"Хроники Амбера\" Р. Желязны, \"Киндрет. Кровные братья\" и дру" +--- + +Администрация проекта "Иные Отражения" приглашает гейм-мастеров ( можно как с опытом, так и без) для " поднятия" крупных проектов по циклам "Хроники Амбера" Р. Желязны, "Киндрет. Кровные братья" и другие. + +Обращаться в  ICQ 207259578 или на admins@anotherreflections.ru diff --git a/src/content/posts/pereezd-proekta-na-novyj-server.md b/src/content/posts/pereezd-proekta-na-novyj-server.md new file mode 100644 index 0000000..16e77f7 --- /dev/null +++ b/src/content/posts/pereezd-proekta-na-novyj-server.md @@ -0,0 +1,17 @@ +--- +title: "Переезд проекта на новый сервер!" +pubDate: "2009-09-14T12:00:21+03:00" +updatedDate: "2013-03-29T14:31:37+03:00" +slug: "pereezd-proekta-na-novyj-server" +legacyId: "11" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "В связи с осуществлением переезда проекта на другой сервер возможна его полная недоступность с 6 на неопределённое время! Администрация приносит извинения за доставленные неудобства." +--- + +В связи с осуществлением переезда проекта на другой сервер возможна его полная недоступность с 6 на неопределённое время! + +Администрация приносит извинения за доставленные неудобства. diff --git a/src/content/posts/pozdravlyaem-s-8-marta.md b/src/content/posts/pozdravlyaem-s-8-marta.md new file mode 100644 index 0000000..a478fb4 --- /dev/null +++ b/src/content/posts/pozdravlyaem-s-8-marta.md @@ -0,0 +1,15 @@ +--- +title: "Поздравляем с 8 марта!" +pubDate: "2013-03-08T02:18:07+03:00" +updatedDate: "2013-03-29T14:35:44+03:00" +slug: "pozdravlyaem-s-8-marta" +legacyId: "179" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Всех представительниц прекрасной половины человечества поздравляем с весенним праздником, с женским днем. Пусть озаряются лучезарными улыбками ваши лица, каждый день дарит добро, заботу и ласку. Милли" +--- + +Всех представительниц прекрасной половины человечества поздравляем с весенним праздником, с женским днем. Пусть озаряются лучезарными улыбками ваши лица, каждый день дарит добро, заботу и ласку. Миллионы роз, тысячи мимоз — сотни цветов к вашим ногам. diff --git a/src/content/posts/pozdravlyaem-s-nastupayushhim-novym-2011-godom.md b/src/content/posts/pozdravlyaem-s-nastupayushhim-novym-2011-godom.md new file mode 100644 index 0000000..2f9c428 --- /dev/null +++ b/src/content/posts/pozdravlyaem-s-nastupayushhim-novym-2011-godom.md @@ -0,0 +1,18 @@ +--- +title: "Поздравляем с наступающим Новым 2011 Годом!" +pubDate: "2010-12-31T23:51:13+03:00" +updatedDate: "2013-03-29T14:33:44+03:00" +slug: "pozdravlyaem-s-nastupayushhim-novym-2011-godom" +legacyId: "87" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Администрация проекта \"Иные Отражения\" поздравляет своих пользователей с наступающим Новым 2011 Годом и желает всем Вам здоровья, счастья и удачи в новом году, пускай сбудутся все Ваши сокровенные жел" +--- + +Администрация проекта "Иные Отражения" поздравляет своих пользователей с наступающим Новым 2011 Годом и желает всем Вам здоровья, счастья и удачи в новом году, пускай сбудутся все Ваши сокровенные желания и мечты, а окружать Вас будет феерический хоровод смеха и веселья!! + + +С уважением, Администрация проекта "Иные Отражения"! diff --git a/src/content/posts/pozdravlyaem-vas-s-novym-godom-i-rozhdestvom.md b/src/content/posts/pozdravlyaem-vas-s-novym-godom-i-rozhdestvom.md new file mode 100644 index 0000000..0d1c0ff --- /dev/null +++ b/src/content/posts/pozdravlyaem-vas-s-novym-godom-i-rozhdestvom.md @@ -0,0 +1,18 @@ +--- +title: "Поздравляем вас с Новым годом и Рождеством!" +pubDate: "2015-12-30T19:26:49+03:00" +slug: "pozdravlyaem-vas-s-novym-godom-i-rozhdestvom" +legacyId: "448" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "В наступающем году мы желаем вам только приятных открытий, только радостных сюрпризов, много позитивного общения, продуктивных обсуждений в кругу близких друзей, взвешенных честных мнений и, конечно," +--- + +В наступающем году мы желаем вам только приятных открытий, только радостных сюрпризов, много позитивного общения, продуктивных обсуждений в кругу близких друзей, взвешенных честных мнений и, конечно, ярких радостных впечатлений от жизни! + +Помните, каждый из нас сам раскрашивает свою жизнь яркими красками! + +С уважением, ролевая группа "Иные Отражения" diff --git a/src/content/posts/priglashaem-vas-na-ri-dozory-2015-pasyans-sudby.md b/src/content/posts/priglashaem-vas-na-ri-dozory-2015-pasyans-sudby.md new file mode 100644 index 0000000..bfe49a5 --- /dev/null +++ b/src/content/posts/priglashaem-vas-na-ri-dozory-2015-pasyans-sudby.md @@ -0,0 +1,34 @@ +--- +title: "Приглашаем Вас на РИ \"Дозоры-2015. Пасьянс Судьбы\"" +pubDate: "2014-10-22T23:09:12+03:00" +updatedDate: "2014-12-27T23:15:21+03:00" +slug: "priglashaem-vas-na-ri-dozory-2015-pasyans-sudby" +legacyId: "426" +author: "admin" +categories: + - "Общие новости" + - "На правах рекламы" + - "Ролевые игры" +categorySlugs: + - "obshhie-novosti" + - "reklama" + - "rolgames" +description: "![](http://cs14111.vk.me/c624023/v624023631/6df9/nZSijmkriFM.jpg) Верить ли в судьбу – личный выбор каждого, поэтому никто не заставляет гостей фестиваля, посвященного дню рождению великого «н" +--- + +![](http://cs14111.vk.me/c624023/v624023631/6df9/nZSijmkriFM.jpg) + + + +Верить ли в судьбу – личный выбор каждого, поэтому никто не заставляет гостей фестиваля, посвященного дню рождению великого «нулевого» мага Мерлина, принимать как истину, что судьба иного в его собственных руках. Или не в его руках? Довольно многое в мире не имеет однозначного ответа, как неоднозначна и судьба самого Мерлина – великого Светлого мага, ставшего впоследствии не менее великим Тёмным. +Знал ли он, к чему приведут его деяния? Сам ли сделал такой выбор? Какие именно артефакты он создавал и зачем? Темы эти входят в программу «научных дискуссий» фестиваля и пользуются неизменной популярностью. Говорят, Великий Маг обладал умением собирать «Пасьянс Судьбы» - ряд знаний, способностей и артефактов, сочетание которых может развернуть перед обладателем знания прошлого, возможности настоящего и картину будущего. Неизвестно, правда ли это, учитывая судьбу самого Мерлина, но это не мешает всем желающим приехать на праздник и поговорить об этом с организаторами и участниками. Самые неожиданные откровения! Самые странные умения! Самые смелые версии и научные открытия рождаются именно в этом месте, которое, одновременно и «научный симпозиум», и фестиваль, и встреча старых друзей (а может и недругов). Шутники называют фестиваль «мерлинфест», но он имеет и официальное название. +«Пасьянс Судьбы» - это и есть официальное название фестиваля для Иных. Информацию о нем можно прочитать лишь через сумрак и узнать место проведения тоже. Если вы смогли узнать это – вас примут как своего, которому рады, но ничем не обязаны, которому помогут, но не защитят от встреч, к которым сами иной не готов. +Дозоры официально НЕ рекомендуют никому из иных ездить на этот фестиваль, потому что не хотят отвечать ни за что, что там происходит или может произойти, но, как ни странно, дозорные сами же и ездят. Разумеется, неофициально. Частным порядком. Наравне с Иными вне Дозоров и наравне с теми, чей дозор окончен, ведь более свободной и демократичной площадки для общения не найти, а цели, как вы понимаете, могут быть у всех очень-очень разные. +Опытные посетители никогда не приедут на этот праздник, не уладив своих дел, а неопытным посетителям может показаться, что рекомендации Дозоров – это формализм. Как знать, как знать… Мы не станем это комментировать, а просто пригласим вас проверить слухи и попробовать решить свои проблемы, которые, быть может, не могут быть решены нигде, кроме как в маленьком городке Пряжно, затерявшемся где-то на просторах Центральной России. Именно г. Пряжно на выходные 25-26 апреля 2015 года станет площадкой этого странного мероприятия – «мерлинфеста». +Забавно, что, в отличие от других фестивалей, этот проходит в городе, имеющем свои Дозоры – маленькие и провинциальные, но самые настоящие и даже очень активные. Более того, эти Дозоры – это только половина Иных города, вторая половина в Дозорах никогда не состояли. Почему сделан такой странный выбор места и как присутствие Дозоров сочетается с традициями неподконтрольности фестиваля – неизвестно. Зато известно со слов организаторов, что традиции свободы фестиваля, от которого после первого же проведения открестились и Светлые, и Темные, и даже Инквизиция, не могут быть нарушены. Говорят, спутать «пасьянс Судьбы» Великого Мерлина невозможно, а кто как ни он сам покровительствует данному фестивалю? Но тут мы уже уходим в область легенд, которых на фестивале предостаточно, и они вряд ли имеют смысл для кого-то, кроме гостей. + +Поэтому, скажем просто и прямо: приезжайте! +Отложите дела, возьмите отпуск и приезжайте. Найдете ли вы свою Судьбу или просто славно проведете время – не так уж и важно. Говорят, что важно тут что-то другое, но что именно – даже в этом каждый может сделать выбор сам. +Подумайте, а что ВАМ важно в судьбе Иного? Сделайте свой выбор и – в путь! + +Мы, организаторы, вас ждем. diff --git a/src/content/posts/prinosim-izvineniya.md b/src/content/posts/prinosim-izvineniya.md new file mode 100644 index 0000000..2e8d1a6 --- /dev/null +++ b/src/content/posts/prinosim-izvineniya.md @@ -0,0 +1,17 @@ +--- +title: "Приносим извинения!" +pubDate: "2009-10-28T11:13:33+03:00" +updatedDate: "2013-03-29T14:31:28+03:00" +slug: "prinosim-izvineniya" +legacyId: "27" +author: "admin" +categories: + - "Технические" +categorySlugs: + - "tech_news" +description: "Уважаемые пользователи! Приносим извинения за недоступность нашего сайта 28.10.2009 с 01:00 до 08:00 в связи с те хническими работами на площадке провайдера." +--- + +Уважаемые пользователи! + +Приносим извинения за недоступность нашего сайта 28.10.2009 с 01:00 до 08:00 в связи с те хническими работами на площадке провайдера. diff --git a/src/content/posts/prinosim-svoi-izvineniya.md b/src/content/posts/prinosim-svoi-izvineniya.md new file mode 100644 index 0000000..c38ea4a --- /dev/null +++ b/src/content/posts/prinosim-svoi-izvineniya.md @@ -0,0 +1,15 @@ +--- +title: "Приносим свои извинения!" +pubDate: "2009-10-02T00:33:55+03:00" +updatedDate: "2013-03-29T14:31:29+03:00" +slug: "prinosim-svoi-izvineniya" +legacyId: "24" +author: "admin" +categories: + - "Технические" +categorySlugs: + - "tech_news" +description: "Приносим свои извинения за недоступность проекта с 0 часов до 18:00 1 октября этого года в связи с техническими работами на площадке интернет провайдера." +--- + +Приносим свои извинения за недоступность проекта с 0 часов до 18:00 1 октября этого года в связи с техническими работами на площадке интернет провайдера. diff --git a/src/content/posts/reklama.md b/src/content/posts/reklama.md new file mode 100644 index 0000000..764adbf --- /dev/null +++ b/src/content/posts/reklama.md @@ -0,0 +1,21 @@ +--- +title: "Реклама..." +pubDate: "2010-04-05T19:44:26+03:00" +updatedDate: "2013-03-29T14:33:48+03:00" +slug: "reklama" +legacyId: "65" +author: "admin" +categories: + - "Общие новости" + - "Технические" +categorySlugs: + - "obshhie-novosti" + - "tech_news" +description: "**Итак, проводим небольшой опрос:** [poll id=\"2\"]" +--- + +**Итак, проводим небольшой опрос:** + + + +[poll id="2"] diff --git a/src/content/posts/ri-dozory-2015-pasyans-sudby.md b/src/content/posts/ri-dozory-2015-pasyans-sudby.md new file mode 100644 index 0000000..d8e6b65 --- /dev/null +++ b/src/content/posts/ri-dozory-2015-pasyans-sudby.md @@ -0,0 +1,33 @@ +--- +title: "РИ \"Дозоры-2015. Пасьянс Судьбы\"" +pubDate: "2014-12-27T23:17:02+03:00" +slug: "ri-dozory-2015-pasyans-sudby" +legacyId: "430" +author: "admin" +categories: + - "Общие новости" + - "На правах рекламы" + - "Ролевые игры" +categorySlugs: + - "obshhie-novosti" + - "reklama" + - "rolgames" +description: "МГ «Раздвоение личности» (Гурда и Леся) и мастер по магии Гудшилд представляем вашему вниманию городскую ролевую игру «Дозоры: пасьянс Судьбы\". Это наша четвертая игра по миру Дозоров (книги С. Лукья" +--- + +МГ «Раздвоение личности» (Гурда и Леся) и мастер по магии Гудшилд представляем вашему вниманию городскую ролевую игру «Дозоры: пасьянс Судьбы". +Это наша четвертая игра по миру Дозоров (книги С. Лукьяненко "Ночной Дозор", "Дневной Дозор", "Сумеречный Дозор") в рамках проекта "Провинциальные Дозоры". В каждой игре мы стараемся придерживаться каноничного мира Дозоров, рассказывая истории, которые могли бы иметь место в нем. + +Цикл наших игр по этому миру представляет собой не связанные между собой истории о простой жизни (ой, простой ли?...) маленьких российских городков и провинциальных Дозоров, а так же о приключениях тех иных, которые попадают в "тихую" российскую глубинку и понимают, что в столицах было как-то даже безопасней... + +Вам не надо знать предысторию прошлых игр и иметь игровые связи, чтобы попасть в новую игру. Каждая новая игра – это самостоятельная история. + +В первой игре («Дозоры: провинциальные истории») мы доказали, что за пределами МКАДа жизнь в принципе возможна. Во второй игре («Дозоры: между Светом и Тьмой») нашими основными героями были Иные вне Дозоров (и мы доказали, что вне Дозоров жизнь есть). В третьей игре («Дозоры: фальшивые зеркала») небольшие оперативные группы дозорных из десяти российских городов совместными усилиями изучали ту самую «простую» жизнь российской глубинки. + +В нашей четвертой игре мы хотим поговорить о неофициальной жизни иных, собрав их там, где они могут установить собственные правила отношений – хотя бы в рамках правил фестиваля. Да-да, у этого мероприятия, как у всякого другого общественного мероприятия, есть свои правила, но организаторы не спешат раскрывать их посетителям. Впрочем, те, кто очень дорожит своей свободой и независимостью, могут не волноваться – правила носят рекомендательный характер, и никакого принуждения в этих правилах нет, за что «мерлинфест» так ценится среди знатоков. Но вот знатоками ЧЕГО становятся завсегдатаи фестиваля – это никому не известно. Кроме, разумеется, самих знатоков. И тех, кто к ним присоединится, став участниками этого странного мероприятия. + +Такова завязка игры. + +В игровом мире действие происходит в вымышленном городе Пряжно, но в реальности вам не потребуется выезжать в российскую глубинку - игра будет проходить в одном из парков Москвы, во вполне комфортное дневное и вечернее время (без ночной игры - ночью спать надо!:)) , два выходных дня подряд. + +Игровое время действия, в отличие от физического места, будет вполне соответствовать реальности - весна 2015 г. diff --git a/src/content/posts/s-23-fevralya.md b/src/content/posts/s-23-fevralya.md new file mode 100644 index 0000000..b7440e5 --- /dev/null +++ b/src/content/posts/s-23-fevralya.md @@ -0,0 +1,17 @@ +--- +title: "С 23 февраля!" +pubDate: "2013-02-23T05:08:13+03:00" +updatedDate: "2013-03-29T14:35:45+03:00" +slug: "s-23-fevralya" +legacyId: "178" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Мужчины, поздравляем Вас с Днем Защитника Отечества! Будьте мужественными и благородными, чуткими и понимающими, сильными и смелыми. Пусть каждый новый день приносит вам понимание того, что день вч" +--- + +Мужчины, поздравляем Вас с Днем Защитника Отечества! + +Будьте мужественными и благородными, чуткими и понимающими, сильными и смелыми. Пусть каждый новый день приносит вам понимание того, что день вчерашний был прожит не зря. Желаем вам здоровья, любви и несокрушимой силы воли. Пусть по жизни вам сопутствует удача и радость, а беды и горести обходят вас стороной. diff --git a/src/content/posts/s-8-marta.md b/src/content/posts/s-8-marta.md new file mode 100644 index 0000000..9a7fddb --- /dev/null +++ b/src/content/posts/s-8-marta.md @@ -0,0 +1,18 @@ +--- +title: "С 8 марта!" +pubDate: "2011-03-07T23:51:27+03:00" +updatedDate: "2013-03-29T14:34:36+03:00" +slug: "s-8-marta" +legacyId: "104" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Желаю счастья и любви. Они дороже всех подарков. И пусть все сбудутся мечты В прекрасный день - 8 Марта!" +--- + +Желаю счастья и любви. +Они дороже всех подарков. +И пусть все сбудутся мечты +В прекрасный день - 8 Марта! diff --git a/src/content/posts/s-dnem-zashhitnika-otechestva.md b/src/content/posts/s-dnem-zashhitnika-otechestva.md new file mode 100644 index 0000000..a21112c --- /dev/null +++ b/src/content/posts/s-dnem-zashhitnika-otechestva.md @@ -0,0 +1,15 @@ +--- +title: "С Днем защитника Отечества!" +pubDate: "2012-02-23T04:15:50+03:00" +updatedDate: "2013-03-29T14:35:16+03:00" +slug: "s-dnem-zashhitnika-otechestva" +legacyId: "161" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Поздравляем с 23 февраля тех, кто по духу и по профессии является защитником Отечества. Поздравляем тех, кто в лихую минуту встанет на защиту своей родины России. Тех, кто встанет на защиту слабого. П" +--- + +Поздравляем с 23 февраля тех, кто по духу и по профессии является защитником Отечества. Поздравляем тех, кто в лихую минуту встанет на защиту своей родины России. Тех, кто встанет на защиту слабого. Поздравляем Воина, Героя и Мужчину!!! С праздником, пусть удача сопутствует Вам во всем! diff --git a/src/content/posts/s-nastupayushhim-novym-2010-godom.md b/src/content/posts/s-nastupayushhim-novym-2010-godom.md new file mode 100644 index 0000000..77322b2 --- /dev/null +++ b/src/content/posts/s-nastupayushhim-novym-2010-godom.md @@ -0,0 +1,34 @@ +--- +title: "С наступающим Новым 2010 Годом!" +pubDate: "2009-12-31T13:38:28+03:00" +updatedDate: "2013-03-29T14:31:21+03:00" +slug: "s-nastupayushhim-novym-2010-godom" +legacyId: "43" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "![](http://s56.radikal.ru/i152/0812/91/74588df82f09.jpg) Уважаемые пользователи и гости нашего ресурса! Администрация корпорации \"Иные Отражения\" поздравляет Вас с наступающим Новым 2010 Годом," +--- + +![](http://s56.radikal.ru/i152/0812/91/74588df82f09.jpg) + +Уважаемые пользователи и гости нашего ресурса! + +Администрация корпорации "Иные Отражения" поздравляет Вас с наступающим Новым 2010 Годом, и желает Вам в эту ночь исполнения всех Ваших желаний, что-бы Новый Год принёс Вам горы счастья, удачи и любви! Пускай год тигра принесёт в Вашу жизнь только радостные моменты, а Ваши уста не покидает смех и улыбка! + +С годом Тигра поздравляю! +И спешу тебе пожелать: +Денег чтоб с его приходом +Было некуда девать. +Новых взлетов без паденья, +Чтоб счастливой жизнью жить, +И всего, чего за деньги +Сам не сможешь ты купить. +Смеха, радости, удачи, +Верной дружбы и добра, +Искренней любви горячей +И сердечного тепла! + +С наступающим, 2010 годом! diff --git a/src/content/posts/s-prazdnikom-8-marta.md b/src/content/posts/s-prazdnikom-8-marta.md new file mode 100644 index 0000000..345185e --- /dev/null +++ b/src/content/posts/s-prazdnikom-8-marta.md @@ -0,0 +1,16 @@ +--- +title: "С праздником 8 марта!" +pubDate: "2012-03-08T04:17:48+03:00" +updatedDate: "2013-03-29T14:35:13+03:00" +slug: "s-prazdnikom-8-marta" +legacyId: "163" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "**Дорогие наши женщины! Поздравляем вас с праздником 8 марта! Пусть реальность для вас будет лучше, чем самая красивая мечта! Пусть в вашей душе всегда царят счастье и гармония! Пусть весна принесет" +--- + +**Дорогие наши женщины! Поздравляем вас с праздником 8 марта! +Пусть реальность для вас будет лучше, чем самая красивая мечта! Пусть в вашей душе всегда царят счастье и гармония! Пусть весна принесет вам любовь!** diff --git a/src/content/posts/s-prazdnikom-s-dnem-pobedy.md b/src/content/posts/s-prazdnikom-s-dnem-pobedy.md new file mode 100644 index 0000000..ef84125 --- /dev/null +++ b/src/content/posts/s-prazdnikom-s-dnem-pobedy.md @@ -0,0 +1,15 @@ +--- +title: "С праздником! С Днем Победы!" +pubDate: "2014-05-09T05:04:42+03:00" +updatedDate: "2014-05-16T20:23:25+03:00" +slug: "s-prazdnikom-s-dnem-pobedy" +legacyId: "393" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Дорогие ветераны Великой Отечественной войны! Сердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям!Пусть Ден" +--- + +Дорогие ветераны Великой Отечественной войны! Сердечно поздравляем вас с днем Великой Победы! Этот праздник объединяет всех нас гордостью за великую Родину, вечной благодарностью победителям!Пусть День 9 мая прибавит новые силы пережившим войну, напомнит молодым, сколько жизней отдано за свободу нашей Родины, как надо любить и защищать свое Отечество! diff --git a/src/content/posts/s-prazdnikom-velikoj-pobedy.md b/src/content/posts/s-prazdnikom-velikoj-pobedy.md new file mode 100644 index 0000000..c9888a8 --- /dev/null +++ b/src/content/posts/s-prazdnikom-velikoj-pobedy.md @@ -0,0 +1,17 @@ +--- +title: "С праздником Великой Победы!" +pubDate: "2013-05-09T10:26:24+03:00" +updatedDate: "2013-07-31T20:28:21+03:00" +slug: "s-prazdnikom-velikoj-pobedy" +legacyId: "344" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Дорогие ветераны! От всей души поздравляем вас с Днем Победы! Мы испытываем гордость за тех, кто защитил нашу родину. Мы никогда не забудем погибших и тех, кто всем смертям назло остался в живых. В э" +--- + +Дорогие ветераны! +От всей души поздравляем вас с Днем Победы! Мы испытываем гордость за тех, кто защитил нашу родину. Мы никогда не забудем погибших и тех, кто всем смертям назло остался в живых. В этот великий день, мы желаем всем хорошего здоровья, отличного настроения, благополучия в семье, мирного и солнечного неба над головой. +С Великим Праздником Победы! diff --git a/src/content/posts/skoro-novyj-godi-malyshi-kak-nikogda-zhdut-ego.md b/src/content/posts/skoro-novyj-godi-malyshi-kak-nikogda-zhdut-ego.md new file mode 100644 index 0000000..82929b0 --- /dev/null +++ b/src/content/posts/skoro-novyj-godi-malyshi-kak-nikogda-zhdut-ego.md @@ -0,0 +1,18 @@ +--- +title: "Скоро новый год,и малыши как никогда ждут его!" +pubDate: "2009-12-25T15:02:40+03:00" +updatedDate: "2013-03-29T14:31:22+03:00" +slug: "skoro-novyj-godi-malyshi-kak-nikogda-zhdut-ego" +legacyId: "40" +author: "admin" +categories: + - "На правах рекламы" +categorySlugs: + - "reklama" +description: "Хотите устроить ребенку праздник? Самый волшебный праздник, который любят все без исключения, и взрослые и дети. Любят зеленую нарядную елку, разноцветные огни, пушистый снег за окном, зимние забавы" +--- + +Хотите устроить ребенку праздник? +Самый волшебный праздник, который любят все без исключения, и взрослые и дети. Любят зеленую нарядную елку, разноцветные огни, пушистый снег за окном, зимние забавы и радости, новогодние чудеса. И конечно, любимые и долгожданные новогодние гости - Дед Мороз и Снегурочка. Игры, веселые песни, заводные танцы, зажигание огней на ёлочке, загадки и мешок с подарками! Ура! Да здравствует наш любимый чудесный Новый Год! + +[Заходите!](http://do4a.ru/newyear.php) diff --git a/src/content/posts/spasibo-za-prazdnik.md b/src/content/posts/spasibo-za-prazdnik.md new file mode 100644 index 0000000..4f97749 --- /dev/null +++ b/src/content/posts/spasibo-za-prazdnik.md @@ -0,0 +1,15 @@ +--- +title: "Спасибо за праздник!" +pubDate: "2009-09-14T11:58:13+03:00" +updatedDate: "2013-03-29T14:31:38+03:00" +slug: "spasibo-za-prazdnik" +legacyId: "8" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Администрация проекта сердечно благодарит всех, кто пришёл на наш день рождения и выражает огромную признательность за чудесную атмосферу, созданную вами!" +--- + +Администрация проекта сердечно благодарит всех, кто пришёл на наш день рождения и выражает огромную признательность за чудесную атмосферу, созданную вами! diff --git a/src/content/posts/spasite-zhizn-vadimu-rudchenko.md b/src/content/posts/spasite-zhizn-vadimu-rudchenko.md new file mode 100644 index 0000000..19c54a4 --- /dev/null +++ b/src/content/posts/spasite-zhizn-vadimu-rudchenko.md @@ -0,0 +1,21 @@ +--- +title: "СПАСИТЕ ЖИЗНЬ ВАДИМУ РУДЧЕНКО" +pubDate: "2011-07-20T14:30:52+03:00" +updatedDate: "2013-07-31T23:03:39+03:00" +slug: "spasite-zhizn-vadimu-rudchenko" +legacyId: "144" +author: "admin" +categories: + - "На правах рекламы" + - "Наши друзья" +categorySlugs: + - "reklama" + - "nashi-druzya" +description: "[](http://vkontakte.ru/club24541060) СПАСИТЕ ЖИЗНЬ ВАДИМУ РУДЧЕНКО" +--- + +[](http://vkontakte.ru/club24541060) + + + +СПАСИТЕ ЖИЗНЬ ВАДИМУ РУДЧЕНКО diff --git a/src/content/posts/texnicheskie-neispravnosti.md b/src/content/posts/texnicheskie-neispravnosti.md new file mode 100644 index 0000000..5ed0e55 --- /dev/null +++ b/src/content/posts/texnicheskie-neispravnosti.md @@ -0,0 +1,15 @@ +--- +title: "Технические неисправности" +pubDate: "2009-11-07T03:21:54+03:00" +updatedDate: "2013-03-29T14:31:23+03:00" +slug: "texnicheskie-neispravnosti" +legacyId: "36" +author: "admin" +categories: + - "Технические" +categorySlugs: + - "tech_news" +description: "Приносим извинения за недоступность сервера с 17:00 по московскому времени до 2 часов 7 ноября в связи с физической поломкой сервера." +--- + +Приносим извинения за недоступность сервера с 17:00 по московскому времени до 2 часов 7 ноября в связи с физической поломкой сервера. diff --git a/src/content/posts/uvazhaemye-igroki.md b/src/content/posts/uvazhaemye-igroki.md new file mode 100644 index 0000000..29bac3e --- /dev/null +++ b/src/content/posts/uvazhaemye-igroki.md @@ -0,0 +1,19 @@ +--- +title: "Уважаемые игроки!" +pubDate: "2013-09-25T13:45:12+03:00" +updatedDate: "2013-09-26T00:49:11+03:00" +slug: "uvazhaemye-igroki" +legacyId: "372" +author: "admin" +categories: + - "Общие новости" + - "Технические" +categorySlugs: + - "obshhie-novosti" + - "tech_news" +description: "В связи с плановыми работами на площадке оператора связи 26 сентября 2013 г. с 5 до 6 утра возможен перерыв в доступе к сайтам проекта длительностью до 15 минут. Приносим извинения за доставленные" +--- + +В связи с плановыми работами на площадке оператора связи 26 сентября 2013 г. с 5 до 6 утра возможен перерыв в доступе к сайтам проекта длительностью до 15 минут. + +Приносим извинения за доставленные неудобства. diff --git a/src/content/posts/vnimanie-igrokam.md b/src/content/posts/vnimanie-igrokam.md new file mode 100644 index 0000000..ed1907f --- /dev/null +++ b/src/content/posts/vnimanie-igrokam.md @@ -0,0 +1,23 @@ +--- +title: "Внимание игрокам!" +pubDate: "2013-05-01T15:48:55+03:00" +updatedDate: "2013-05-04T16:16:43+03:00" +slug: "vnimanie-igrokam" +legacyId: "335" +author: "admin" +categories: + - "Общие новости" + - "Над бездной" + - "Глубина" +categorySlugs: + - "obshhie-novosti" + - "nad-bezdnoj" + - "glubina" +description: "По техническим причинам временно закрыты проекты: \"Иные Отражения: Глубина\" и \"Иные Отражения: Над Бездной\". Приносим свои извинения за доставленные неудобства." +--- + +По техническим причинам временно закрыты проекты: "Иные Отражения: Глубина" и "Иные Отражения: Над Бездной". + + + +Приносим свои извинения за доставленные неудобства. diff --git a/src/content/posts/vnimanie-ishhem-adminov-i-gejm-masterov.md b/src/content/posts/vnimanie-ishhem-adminov-i-gejm-masterov.md new file mode 100644 index 0000000..47f4dfd --- /dev/null +++ b/src/content/posts/vnimanie-ishhem-adminov-i-gejm-masterov.md @@ -0,0 +1,18 @@ +--- +title: "Внимание! Ищем админов и гейм-мастеров!" +pubDate: "2013-01-18T01:34:39+03:00" +updatedDate: "2013-08-18T01:35:50+03:00" +slug: "vnimanie-ishhem-adminov-i-gejm-masterov" +legacyId: "352" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов: - [Иные Отражения: Ренессанс](http://renessans.anotherreflections.ru/)" +--- + +Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов: + + + - [Иные Отражения: Ренессанс](http://renessans.anotherreflections.ru/) diff --git a/src/content/posts/vnimanie-my-ishhem-adminov-i-gejm-masterov.md b/src/content/posts/vnimanie-my-ishhem-adminov-i-gejm-masterov.md new file mode 100644 index 0000000..8e42a7a --- /dev/null +++ b/src/content/posts/vnimanie-my-ishhem-adminov-i-gejm-masterov.md @@ -0,0 +1,31 @@ +--- +title: "Внимание! Мы ищем админов и гейм-мастеров!" +pubDate: "2013-08-18T01:40:06+03:00" +slug: "vnimanie-my-ishhem-adminov-i-gejm-masterov" +legacyId: "354" +author: "admin" +categories: + - "Общие новости" + - "Технические" + - "На правах рекламы" +categorySlugs: + - "obshhie-novosti" + - "tech_news" + - "reklama" +description: "Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов: - [Иные Отражения: Ренессанс](http://renessans.anotherreflections.ru/) - [Иные Отр" +--- + +Администрация проекта приглашает администраторов и гейм-мастеров, желающих поучаствовать в развитии проектов: + + + - [Иные Отражения: Ренессанс](http://renessans.anotherreflections.ru/) + + - [Иные Отражения: Киндрет - Кровные братья](http://kindret.anotherreflections.ru/) + + - [Иные Отражения: Вархаммер 40к](http://warhammer40k.anotherreflections.ru/) + + - [Иные Отражения: Амбер - янтарное королевство](http://amber.anotherreflections.ru/) + + + +Обращаться на мыло admin@anotherreflections.ru или в группу ВКонтакте. diff --git a/src/content/posts/vnimanie-texnicheskie-raboty-2.md b/src/content/posts/vnimanie-texnicheskie-raboty-2.md new file mode 100644 index 0000000..d45bf27 --- /dev/null +++ b/src/content/posts/vnimanie-texnicheskie-raboty-2.md @@ -0,0 +1,27 @@ +--- +title: "Внимание! Технические работы!" +pubDate: "2013-08-06T10:05:18+03:00" +updatedDate: "2013-08-18T01:37:38+03:00" +slug: "vnimanie-texnicheskie-raboty-2" +legacyId: "348" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "Уважаемые пользователи! В связи с проведением плановых работ по апгрейду оборудования на площадке дата-центра 8 августа 2013 г. с 04:00 до 07:00 возможны кратковременные перерывы в работе проек" +--- + +Уважаемые пользователи! + + + + + +В связи с проведением плановых работ по апгрейду оборудования на площадке дата-центра 8 августа 2013 г. с 04:00 до 07:00 возможны кратковременные перерывы в работе проекта, продолжительностью до 15 минут. + + + + + +Приносим свои извинения за доставленные неудобства. diff --git a/src/content/posts/vnimanie-texnicheskie-raboty-3.md b/src/content/posts/vnimanie-texnicheskie-raboty-3.md new file mode 100644 index 0000000..fde3d43 --- /dev/null +++ b/src/content/posts/vnimanie-texnicheskie-raboty-3.md @@ -0,0 +1,18 @@ +--- +title: "Внимание! Технические работы!" +pubDate: "2013-08-24T01:55:40+03:00" +slug: "vnimanie-texnicheskie-raboty-3" +legacyId: "361" +author: "admin" +categories: + - "Общие новости" + - "Технические" +categorySlugs: + - "obshhie-novosti" + - "tech_news" +description: "В связи с проведением технических работ на серверах с 02:00 до 04:00 24 августа 2013 г. возможны перерывы в работе до 30 минут. Приносим свои извинения за доставленные неудобства." +--- + +В связи с проведением технических работ на серверах с 02:00 до 04:00 24 августа 2013 г. возможны перерывы в работе до 30 минут. + +Приносим свои извинения за доставленные неудобства. diff --git a/src/content/posts/vnimanie-texnicheskie-raboty-4.md b/src/content/posts/vnimanie-texnicheskie-raboty-4.md new file mode 100644 index 0000000..f0b09fd --- /dev/null +++ b/src/content/posts/vnimanie-texnicheskie-raboty-4.md @@ -0,0 +1,16 @@ +--- +title: "Внимание! Технические работы!" +pubDate: "2015-05-29T01:26:28+03:00" +updatedDate: "2015-06-02T01:27:06+03:00" +slug: "vnimanie-texnicheskie-raboty-4" +legacyId: "440" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "2 июня 2015г. с 3 до 4 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с предоставлением услуг длительностью до 30 мин" +--- + +2  июня  2015г. с 3 до 4 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с предоставлением услуг длительностью до 30 минут. +Приносим  Вам  свои извинения за доставленные неудобства и надеемся на Ваше понимание! diff --git a/src/content/posts/vnimanie-texnicheskie-raboty-6.md b/src/content/posts/vnimanie-texnicheskie-raboty-6.md new file mode 100644 index 0000000..bf8fc5f --- /dev/null +++ b/src/content/posts/vnimanie-texnicheskie-raboty-6.md @@ -0,0 +1,16 @@ +--- +title: "Внимание! Технические работы!" +pubDate: "2014-08-17T23:49:49+03:00" +slug: "vnimanie-texnicheskie-raboty-6" +legacyId: "416" +author: "admin" +categories: + - "Общие новости" + - "Технические" +categorySlugs: + - "obshhie-novosti" + - "tech_news" +description: "19 августа 2014г. с 3 до 4-30 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с доступом к сайтам проекта длительностью" +--- + +19 августа 2014г. с 3 до 4-30 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с доступом к сайтам проекта длительностью до 15 минут. Приносим Вам свои извинения за доставленные неудобства и надеемся на Ваше понимание! diff --git a/src/content/posts/vnimanie-texnicheskie-raboty.md b/src/content/posts/vnimanie-texnicheskie-raboty.md new file mode 100644 index 0000000..bab1e76 --- /dev/null +++ b/src/content/posts/vnimanie-texnicheskie-raboty.md @@ -0,0 +1,17 @@ +--- +title: "Внимание! Технические работы!" +pubDate: "2010-06-10T01:21:47+03:00" +updatedDate: "2013-03-29T14:33:47+03:00" +slug: "vnimanie-texnicheskie-raboty" +legacyId: "68" +author: "admin" +categories: + - "Общие новости" + - "Технические" +categorySlugs: + - "obshhie-novosti" + - "tech_news" +description: "Уважаемые пользователи! Сегодня, 10 июня 2010 года планируется проведение технических работ, что вызовет недоступность ресурса продолжительностью около 30 минут. О точном времени проведения работ бу" +--- + +Уважаемые пользователи! Сегодня, 10 июня 2010 года планируется проведение технических работ, что вызовет недоступность ресурса продолжительностью около 30 минут. О точном времени проведения работ будет объявлено дополнительно. Приносим Вам извинения за доставленные неудобства! diff --git a/src/content/posts/zdravstvuj-posetitel.md b/src/content/posts/zdravstvuj-posetitel.md new file mode 100644 index 0000000..cb9f7d6 --- /dev/null +++ b/src/content/posts/zdravstvuj-posetitel.md @@ -0,0 +1,28 @@ +--- +title: "Здравствуй посетитель!" +pubDate: "2011-05-12T17:27:53+03:00" +updatedDate: "2013-03-29T14:34:35+03:00" +slug: "zdravstvuj-posetitel" +legacyId: "120" +author: "admin" +categories: + - "Общие новости" +categorySlugs: + - "obshhie-novosti" +description: "**Приветствую тебя на нашем сайте!** **Приглашаем тебя в мир увлекательных форумных ролевых игр по мотивам фантастических миров цикла \"Дозоры\" Сергея Лукьяненко и Владмира Васильева, \"Хроники Амб" +--- + +**Приветствую тебя на нашем сайте!** + + +**Приглашаем тебя в мир увлекательных форумных ролевых игр по мотивам фантастических миров цикла "Дозоры" Сергея Лукьяненко и Владмира Васильева, "Хроники Амбера" Роджера Желязны,"Киндрет - Кровные братья" Алексея Пехова и многих других!** + +**Выбирай мир, который тебе понравится, регистрируйся, играй, получай удовольствие!** + +**По любым вопросам Вы можете обратиться в ЛС ГеймМастеру Кейран!** + +** +** + +**С уважением, администрация проекта "Иные Отражениия"! +** diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro new file mode 100644 index 0000000..64d3b5c --- /dev/null +++ b/src/layouts/BaseLayout.astro @@ -0,0 +1,65 @@ +--- +import '../styles/global.css'; +import { SITE_TITLE, SITE_DESCRIPTION, SITE_URL, SITE_LANG, MAIN_NAV } from '../consts'; + +interface Props { + title?: string; + description?: string; + ogType?: 'website' | 'article'; +} + +const { title, description, ogType = 'website' } = Astro.props; +const pageTitle = title ? `${title} — ${SITE_TITLE}` : SITE_TITLE; +const pageDesc = description || SITE_DESCRIPTION; +const canonical = new URL(Astro.url.pathname, SITE_URL).toString(); +const year = new Date().getFullYear(); +--- + + + + + + {pageTitle} + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +

      © 2006–{year} {SITE_TITLE} · RSS · Sitemap

      +
      + + diff --git a/src/lib/rss-helpers.ts b/src/lib/rss-helpers.ts new file mode 100644 index 0000000..cc28c8d --- /dev/null +++ b/src/lib/rss-helpers.ts @@ -0,0 +1,52 @@ +import { getCollection, render } from 'astro:content'; +import type { CollectionEntry } from 'astro:content'; +import { experimental_AstroContainer as AstroContainer } from 'astro/container'; +import sanitizeHtml from 'sanitize-html'; +import { SITE_URL, RSS_CUTOFF, RSS_LIMIT } from '../consts'; + +/** + * Берёт коллекцию постов, отфильтровывает по cutoff (для IPB Importer + * не вбрасывать архив), сортирует по pubDate desc, режет до RSS_LIMIT. + */ +export async function getFeedPosts(filter?: (p: CollectionEntry<'posts'>) => boolean) { + const all = await getCollection('posts'); + return all + .filter((p) => p.data.pubDate >= RSS_CUTOFF) + .filter((p) => (filter ? filter(p) : true)) + .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()) + .slice(0, RSS_LIMIT); +} + +/** + * Рендерит markdown тело поста в безопасный HTML строкой — + * для CDATA-врезки в . + */ +export async function renderPostHtml(post: CollectionEntry<'posts'>): Promise { + const container = await AstroContainer.create(); + const { Content } = await render(post); + const html = await container.renderToString(Content); + return sanitizeHtml(html, { + allowedTags: [ + 'p', 'a', 'strong', 'em', 'b', 'i', 'u', 'br', 'hr', + 'ul', 'ol', 'li', + 'blockquote', 'pre', 'code', + 'h1', 'h2', 'h3', 'h4', + 'img', + ], + allowedAttributes: { + a: ['href', 'title', 'target', 'rel'], + img: ['src', 'alt', 'title', 'width', 'height'], + }, + allowedSchemes: ['http', 'https', 'mailto'], + transformTags: { + a: (_tag, attribs) => ({ + tagName: 'a', + attribs: { ...attribs, target: '_blank', rel: 'noopener noreferrer' }, + }), + }, + }); +} + +/** Абсолютный URL поста, стабильный — становится guid для IPB-дедупликации. */ +export const postUrl = (post: CollectionEntry<'posts'>) => + new URL(`/${post.data.slug}/`, SITE_URL).toString(); diff --git a/src/pages/[slug].astro b/src/pages/[slug].astro new file mode 100644 index 0000000..092f15b --- /dev/null +++ b/src/pages/[slug].astro @@ -0,0 +1,51 @@ +--- +import { getCollection, render } from 'astro:content'; +import BaseLayout from '../layouts/BaseLayout.astro'; + +export async function getStaticPaths() { + const posts = await getCollection('posts'); + const pages = await getCollection('pages'); + return [ + ...posts.map((p) => ({ params: { slug: p.data.slug }, props: { entry: p, kind: 'post' as const } })), + ...pages.map((p) => ({ params: { slug: p.data.slug }, props: { entry: p, kind: 'page' as const } })), + ]; +} + +const { entry, kind } = Astro.props; +const { Content } = await render(entry); + +const fmtDate = (d: Date) => + d.toLocaleDateString('ru-RU', { year: 'numeric', month: 'long', day: 'numeric' }); +--- + +
      +
      +

      {entry.data.title}

      + {kind === 'post' && ( + + )} +
      +
      + +
      +
      + + {kind === 'post' && ( + + )} +
      diff --git a/src/pages/category/[slug].astro b/src/pages/category/[slug].astro new file mode 100644 index 0000000..076e177 --- /dev/null +++ b/src/pages/category/[slug].astro @@ -0,0 +1,48 @@ +--- +import { getCollection } from 'astro:content'; +import BaseLayout from '../../layouts/BaseLayout.astro'; + +export async function getStaticPaths() { + const posts = await getCollection('posts'); + const bySlug = new Map(); + + for (const p of posts) { + p.data.categorySlugs.forEach((slug, i) => { + const name = p.data.categories[i] ?? slug; + if (!bySlug.has(slug)) bySlug.set(slug, { name, posts: [] as any }); + (bySlug.get(slug)!.posts as any).push(p); + }); + } + + return Array.from(bySlug.entries()).map(([slug, { name, posts }]) => ({ + params: { slug }, + props: { name, posts }, + })); +} + +const { name, posts } = Astro.props; +const sorted = posts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()); + +const fmtDate = (d: Date) => + d.toLocaleDateString('ru-RU', { year: 'numeric', month: 'long', day: 'numeric' }); +--- + +
      +

      {name}

      + +
        + {sorted.map((post) => ( +
      • + +

        {post.data.title}

        + {post.data.description &&

        {post.data.description}…

        } +
      • + ))} +
      +
      +
      diff --git a/src/pages/category/[slug]/feed.xml.ts b/src/pages/category/[slug]/feed.xml.ts new file mode 100644 index 0000000..0d546a0 --- /dev/null +++ b/src/pages/category/[slug]/feed.xml.ts @@ -0,0 +1,46 @@ +import rss from '@astrojs/rss'; +import type { APIContext } from 'astro'; +import { getCollection } from 'astro:content'; +import { SITE_TITLE, SITE_URL, SITE_LANG } from '../../../consts'; +import { getFeedPosts, renderPostHtml, postUrl } from '../../../lib/rss-helpers'; + +export async function getStaticPaths() { + const posts = await getCollection('posts'); + const slugs = new Map(); + posts.forEach((p) => + p.data.categorySlugs.forEach((s, i) => slugs.set(s, p.data.categories[i] ?? s)) + ); + return Array.from(slugs.entries()).map(([slug, name]) => ({ + params: { slug }, + props: { name }, + })); +} + +export async function GET(context: APIContext) { + const slug = context.params.slug as string; + const { name } = context.props as { name: string }; + + const posts = await getFeedPosts((p) => p.data.categorySlugs.includes(slug)); + + const items = await Promise.all( + posts.map(async (post) => ({ + title: post.data.title, + link: postUrl(post), + guid: postUrl(post), + pubDate: post.data.pubDate, + description: post.data.description || post.data.title, + content: await renderPostHtml(post), + author: post.data.author, + categories: post.data.categories, + })) + ); + + return rss({ + title: `${SITE_TITLE} — ${name}`, + description: `Новости категории «${name}»`, + site: context.site ?? SITE_URL, + items, + customData: `${SITE_LANG}${new Date().toUTCString()}`, + xmlns: { content: 'http://purl.org/rss/1.0/modules/content/' }, + }); +} diff --git a/src/pages/feed.xml.ts b/src/pages/feed.xml.ts new file mode 100644 index 0000000..d2ee6f9 --- /dev/null +++ b/src/pages/feed.xml.ts @@ -0,0 +1,30 @@ +import rss from '@astrojs/rss'; +import type { APIContext } from 'astro'; +import { SITE_TITLE, SITE_DESCRIPTION, SITE_URL, SITE_LANG } from '../consts'; +import { getFeedPosts, renderPostHtml, postUrl } from '../lib/rss-helpers'; + +export async function GET(context: APIContext) { + const posts = await getFeedPosts(); + + const items = await Promise.all( + posts.map(async (post) => ({ + title: post.data.title, + link: postUrl(post), + guid: postUrl(post), + pubDate: post.data.pubDate, + description: post.data.description || post.data.title, + content: await renderPostHtml(post), + author: post.data.author, + categories: post.data.categories, + })) + ); + + return rss({ + title: SITE_TITLE, + description: SITE_DESCRIPTION, + site: context.site ?? SITE_URL, + items, + customData: `${SITE_LANG}${new Date().toUTCString()}`, + xmlns: { content: 'http://purl.org/rss/1.0/modules/content/' }, + }); +} diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..4953020 --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,47 @@ +--- +import { getCollection } from 'astro:content'; +import BaseLayout from '../layouts/BaseLayout.astro'; +import { FORUMS } from '../consts'; + +const posts = (await getCollection('posts')) + .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()); + +const fmtDate = (d: Date) => + d.toLocaleDateString('ru-RU', { year: 'numeric', month: 'long', day: 'numeric' }); +--- + +
      +

      Новости

      +
        + {posts.map((post) => ( +
      • + +

        {post.data.title}

        + {post.data.description &&

        {post.data.description}…

        } +
      • + ))} +
      +
      + +
      +

      Форумы и проекты

      +
        + {FORUMS.map((f) => ( +
      • {f.name}
      • + ))} +
      +
      +
      diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..7034fa5 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,241 @@ +/* Иные Отражения — тёмная палитра в духе старой темы darkness-10, без скевоморфизма */ + +:root { + --bg: #0d1117; + --bg-elev: #161b22; + --bg-elev-2: #1c2129; + --border: #2a313c; + --fg: #d4d4d4; + --fg-muted: #8b949e; + --fg-dim: #6e7681; + --accent: #9a7bff; + --accent-hover: #b59aff; + --link: #79b8ff; + --link-hover: #c8e1ff; + + --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; + --font-serif: 'Lora', 'PT Serif', Georgia, serif; + --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace; + + --container: 760px; + --container-wide: 1100px; +} + +*, *::before, *::after { box-sizing: border-box; } + +html { + background: var(--bg); + color: var(--fg); + font-family: var(--font-sans); + font-size: 17px; + line-height: 1.65; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +body { + margin: 0; + min-height: 100vh; + display: flex; + flex-direction: column; +} + +main { + flex: 1 0 auto; + width: 100%; + max-width: var(--container); + margin: 0 auto; + padding: 2rem 1.25rem 4rem; +} + +h1, h2, h3, h4 { + font-family: var(--font-serif); + font-weight: 600; + color: #e6edf3; + line-height: 1.25; + margin: 1.8em 0 0.6em; +} + +h1 { font-size: 2.1rem; margin-top: 0.4em; } +h2 { font-size: 1.55rem; } +h3 { font-size: 1.25rem; } + +p, ul, ol, blockquote { margin: 0 0 1.15em; } + +a { + color: var(--link); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: color .15s, border-color .15s; +} +a:hover { color: var(--link-hover); border-bottom-color: var(--link-hover); } + +blockquote { + margin: 1.2em 0; + padding: .2em 1em; + border-left: 3px solid var(--accent); + color: var(--fg-muted); + background: var(--bg-elev); + font-style: italic; +} + +img { max-width: 100%; height: auto; } + +hr { + border: 0; + border-top: 1px solid var(--border); + margin: 2em 0; +} + +code, pre { + font-family: var(--font-mono); + font-size: .92em; +} +code { + background: var(--bg-elev); + padding: .1em .35em; + border-radius: 3px; +} +pre { + background: var(--bg-elev); + border: 1px solid var(--border); + padding: 1em; + border-radius: 6px; + overflow-x: auto; +} + +/* Header */ +.site-header { + border-bottom: 1px solid var(--border); + background: linear-gradient(180deg, #0a0e14 0%, var(--bg) 100%); +} +.site-header-inner { + max-width: var(--container-wide); + margin: 0 auto; + padding: 1.25rem 1.25rem; + display: flex; + align-items: baseline; + justify-content: space-between; + flex-wrap: wrap; + gap: 1rem; +} +.site-title { + font-family: var(--font-serif); + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.01em; + margin: 0; +} +.site-title a { + color: #e6edf3; + border-bottom: none; +} +.site-title a:hover { color: var(--accent); } +.site-tagline { + font-size: .85rem; + color: var(--fg-muted); + display: block; + margin-top: 2px; +} +.site-nav { + display: flex; + gap: 1.5rem; + list-style: none; + margin: 0; + padding: 0; +} +.site-nav a { + color: var(--fg); + border-bottom: none; + font-size: .95rem; +} +.site-nav a:hover { color: var(--accent); } + +/* Footer */ +.site-footer { + border-top: 1px solid var(--border); + padding: 2rem 1.25rem 3rem; + color: var(--fg-muted); + font-size: .88rem; + text-align: center; +} +.site-footer a { color: var(--fg-muted); border-bottom-color: var(--border); } +.site-footer a:hover { color: var(--accent); border-bottom-color: var(--accent); } + +/* Post list */ +.post-list { list-style: none; padding: 0; margin: 0; } +.post-list-item { + padding: 1.25rem 0; + border-bottom: 1px solid var(--border); +} +.post-list-item:last-child { border-bottom: none; } +.post-list-item h2 { + margin: 0 0 .35em; + font-size: 1.35rem; +} +.post-list-item h2 a { + color: #e6edf3; + border-bottom: none; +} +.post-list-item h2 a:hover { color: var(--accent); } +.post-meta { + font-size: .82rem; + color: var(--fg-dim); + margin-bottom: .4em; +} +.post-meta a { + color: var(--fg-muted); + border-bottom: none; +} +.post-meta a:hover { color: var(--accent); } +.post-excerpt { color: var(--fg-muted); margin: 0; } + +/* Single post */ +.post header { + margin-bottom: 2em; + padding-bottom: 1em; + border-bottom: 1px solid var(--border); +} +.post h1 { margin: 0 0 .3em; } + +/* Forums grid */ +.forums-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); + gap: .75rem; + margin: 1em 0 2em; + list-style: none; + padding: 0; +} +.forums-grid a { + display: block; + padding: .75rem 1rem; + background: var(--bg-elev); + border: 1px solid var(--border); + border-radius: 4px; + color: var(--fg); + font-size: .95rem; +} +.forums-grid a:hover { + background: var(--bg-elev-2); + border-color: var(--accent); + color: var(--accent); +} + +/* Pagination */ +.pagination { + display: flex; + justify-content: space-between; + margin: 2em 0; + gap: 1rem; +} +.pagination a { + padding: .5em 1em; + border: 1px solid var(--border); + border-radius: 4px; + border-bottom: 1px solid var(--border); +} +.pagination a:hover { + border-color: var(--accent); + color: var(--accent); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8bf91d3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +}