diff --git a/docs/info/sanctions/README.md b/docs/info/sanctions/README.md index 7f9be78..53b7113 100644 --- a/docs/info/sanctions/README.md +++ b/docs/info/sanctions/README.md @@ -1,6 +1,7 @@ --- title: Санкции description: Санкции от поисковых систем +icon: solid fa-poo index: false --- diff --git a/docs/info/sanctions/google/README.md b/docs/info/sanctions/google/README.md new file mode 100644 index 0000000..cc0e8cb --- /dev/null +++ b/docs/info/sanctions/google/README.md @@ -0,0 +1,35 @@ +--- +title: Санкции Google +icon: brands fa-google +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Поисковые системы, Санкции поисковых систем] + +--- + +# Санкции Google + +Система санкций Google несколько отличается от [Яндекса](/info/sanctions/yandex/). Здесь можно условно разделить санкции на два вида: «меры, принятые вручную» (обычно такие санкции затрагивают лишь часть страниц сайта) и санкции, которые встроены непосредственно в алгоритм ранжирования Google. + +## Фильтры + +* **Panda** с февраля 2011. Отслеживает: дубликаты контента, плагиат, переспам ключевыми словами, спам-контент. +* **Penguin** с апреля 2012. Отслеживает: ссылочный спам, ссылки с нерелевантных сайтов, ссылки с ссайтов соштрафами, «ядовитые» ссылки, ссылки с переоптимизированными анкорами. +* **Hummingbird** (**Колибри**) с августа 2013. Отслеживает: некачественный контент и избыток ключевых слов в документе (переспам). +* **Pigeon**, июль - декабрь 2014. Отслеживает: некачественное on и off - site SEO, влияющее на региональную выдачу. +* **Mobilegeddon**, с апреля 2015. Отслеживает: «неадаптивность» или отсутствие мобильной версии сайта. +* **RankBrain** с октября 2015. Отслеживает: релевантность запросов контенту, штрафует за некачественное или бесполезное содержание, понижает в выдаче сайты с неудобным пользовательским интерфейсом (User Experience Design). +* **Possum** с сентября 2016. Отслеживает: некачественный и спамный контент в локальной выдаче. Убирает монополию компаний в результатах локального поиска (1 компания - 1 место в выдаче, вместо нескольких страниц одной компании). +* **Fred** с март 2017. Отслеживает: избыточность рекламы, сайты созданные исключительно с целью продвижения услуг третьих лиц (аффилированность) и не несущие дополнительной полезной информации. + +## Упор на качество сайтов + +C 2017 года основной упор Google при выкатывании новых алгоритмов ранжирования делает на качество сайтов. Обновление алгоритмов Google, например прошедший в агусте 2018 года (Medic Update), показало, как Google может легко разрушить любой онлайн бизнес, который не соответствуеь представлениям Google о качестве сайтов. Оптимизаторы, годами работающие над медицинскими, финансовыми, ЗОЖ сайтами, сайтами связанными с электронной коммерцией, и применяющие «сомнительные» методы продвижения в одночасье остались без трафика, без посетителей, без денег. Реальный бизнес из за недобросовестных оптимизаторов утерял большую часть новых клиентов, что привело к снижению прибыли и даже к закрытию ряда компаний. + +Все это было вызвано тем, что сайты формально отвечали требованиям алгоритмов ранжирования Google, но не требованиям пользователей. На этих сайтах оптимизаторы показали все свое мастерство SEO оптимизации, при этом недостаточно вложились в их полезность для конечных пользователей. + +Сегодня есть практические методы восстановления сайтов, потерявших трафик в результате медицинского обновления. Но все они потребуют от вас большой работы по совершенствованию самой сути вашего интернет проекта. diff --git a/docs/info/sanctions/google/fred.md b/docs/info/sanctions/google/fred.md new file mode 100644 index 0000000..62a20bf --- /dev/null +++ b/docs/info/sanctions/google/fred.md @@ -0,0 +1,27 @@ +--- +title: Фильтр Fred +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Fred, Поисковые системы, Санкции поисковых систем] + +order: 8 + +--- + +# Фильтр Fred + +**Дата запуска**: март 2017 + +**Отслеживает**: избыточность рекламы, сайты созданные исключительно с целью продвижения услуг третьих лиц (аффилированность) и не несущие дополнительной полезной информации. + +## Как работает + +Наиболее пострадали сайты, активно монетизируемые владельцами с низким качеством контента. Также произошло дальнейшее ужесточение алгоритма по отслеживанию некачественных ссылок. + +## Что делать + +Провести анализ ссылочного профиля. Провести аудит качества контента вашего сайта. Ответить на вопрос, приносит ли ваш сайт добавочную пользу посетителям. Снизить рекламные предложения на сайте, отказаться от сомнительных партнерок. Рекомендую в очередной раз перечитать «Рекомендации Google по обеспечению качества веб-сайтов» и проверить соответствует ли сайт стандартам Better Ads. diff --git a/docs/info/sanctions/google/hummingbird.md b/docs/info/sanctions/google/hummingbird.md new file mode 100644 index 0000000..f9d8f00 --- /dev/null +++ b/docs/info/sanctions/google/hummingbird.md @@ -0,0 +1,35 @@ +--- +title: Фильтр Hummingbird (Колибри) +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Hummingbird, Поисковые системы, Санкции поисковых систем] + +order: 3 + +--- + +# Фильтр Hummingbird + +**Дата запуска**: август 2013 + +**Отслеживает**: некачественный контент и избыток ключевых слов в документе (переспам). + +## Как работает + +Алгоритм «Колибри» позволяет интерпретировать естественный язык и ранжировать страницы, даже если в текст не включены поисковые запросы. Это достигается использованием алгоритмов опирающихся на латентные семантические индексы, использование синонимов и похожих терминов. Отслеживает «естественность» текстов и штрафует за переспам ключевыми словами. + +## Что делать + +Использовать контент, написанный естественным языком. + +Не допускать избыточного использования ключей. + +С введением этого алгоритма в среде оптимизаторов стала модна аббревиатура LSI – латентное семантическое индексирование, которое предполагает, что поисковый робот выделяет из текста не отдельные фразы, часто встречающиеся среди вводимых в поисковую строку, а выбирает тематику страницы на основании комплекса используемых на ней слов, включая словоформы, синонимы и близкотематические фразы. + +Именно поэтому стоит широко внедрять синонимы и связанные выражения с ключевыми словами. Более тщательно подходить к работе с ключевыми словами, опираться на «подсказки» выдачи поисковых систем, которые отлично показывают связанные с ключом запросы. + +Алгоритм породил множество сервисов, связанных с подбором LSI – ключей для расширения семантического ядра вашего сайта в нужном направлении. Осталось дело только за качественным журналистом - копирайтером. diff --git a/docs/info/sanctions/google/mobilegeddon.md b/docs/info/sanctions/google/mobilegeddon.md new file mode 100644 index 0000000..a2bb3eb --- /dev/null +++ b/docs/info/sanctions/google/mobilegeddon.md @@ -0,0 +1,26 @@ +--- +title: Фильтр Mobilegeddon +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Mobilegeddon, Mobile, Поисковые системы, Санкции поисковых систем] + +order: 5 + +--- + +# Фильтр Mobilegeddon + +**Дата запуска**: апрель 2015 +**Отслеживает**: «неадаптивность» или отсутствие мобильной версии сайта. + +## Как работает + +Алгоритм вычищает и серьезно понижает в основной выдаче сайты без «мобильной» версии. Кроме того, в мобильной выдаче в ТОП выводятся только «мобильные» версии сайта. + +## Что делать + +Внедрить шаблон с респонсивной версткой (резиновой) или адаптивной версткой (отдельная версия сайта под мобильные устройства). Далее необходимо провести ряд работ: оптимизировать скорость загрузки страниц сайта, сделать загрузку всех скриптов ассинхронным, оптимизировать размеры и вес изображений, использовать кэширование сайта. Для проверки мобильности вашего ресурса используйте инструмент от Google. Кроме того, если динамического контента на странице мало, рекомендуется использование AMP страниц. diff --git a/docs/info/sanctions/google/panda.md b/docs/info/sanctions/google/panda.md new file mode 100644 index 0000000..d15c7b5 --- /dev/null +++ b/docs/info/sanctions/google/panda.md @@ -0,0 +1,43 @@ +--- +title: Фильтр Panda +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Panda, Поисковые системы, Санкции поисковых систем] + +order: 1 + +--- + +# Фильтр Panda + +**Дата запуска**: февраль 2011 + +**Отслеживает**: дубликаты контента, плагиат, переспам ключевыми словами, спам-контент. + +## Как работает? + +Панда оценивает «качество» документов сайта (страниц) и присваивает некий балл, используемый впоследствии как один из факторов ранжирования. Первоначально алгоритм «Панда» был фильтром, но с 2016 года он стал составной частью основного алгоритма ранжирования. Вследствие этого штрафы (пессимизация) некачественного и переспамленного контента проводится значительно быстрей. + +Google Panda был разработан как алгоритм борьбы с текстовым спамом и некачественным контентом, а также с некачественными сайтами в целом. В ходе эволюции алгоритма стало известно, что данный алгоритм понижает позиции сайтов, которые: + +* содержат копированный контент с других сайтов; +* искусственно разбивают одну публикацию на несколько и заставляют пользователей постоянно нажимать «Следующая часть статьи», чтобы получить весь контент полностью; +* содержат контент сотен разных тематик (контент-фермы); +* некорректно работают технически, или регулярно недоступны, или содержат много технических ошибок; +* содержат низкокачественный контент. При этом даже опечатки входят в признаки низкого качества текста для «Панды»; +* содержат машинно-сгенерированный контент. Гугл умеет распознавать генерацию спамерских «уникальных текстов» с помощью марковских алгоритмов, вариаций синонимов и т. п.; +* имеют большой показатель отказов - сигнал низкого качества контента или его нерелевантности; +* являются входом в «партнёрки» (то есть сайты, которые созданы специально для заработка на партнёрских программах); +* имеют предупреждения о безопасности и другие сообщения об ошибках; +* имеют плохой дизайн и юзабилити. Это субъективная метрика, но сайт, на котором пользователь из-за дизайна не может легко получить нужный контент (как и поисковый робот), однозначно будет считаться плохим; +* не имеют оптимизации под поисковые системы (например, пустые метатеги и заголовки страниц). + +Алгоритм Panda постоянно обновляется (в среднем около одного раза в месяц), но официальная информация об обновлениях уже давно не публикуется. Ваш сайт может быть затронут «Пандой» именно в очередное обновление алгоритма - об этом будет сигнализировать резкое падение трафика. Следите за отраслевыми СМИ и сообществами веб-мастеров - обычно в течение пары дней после апдейта о нём становится известно исследователям и оптимизаторской общественности. + +## Что делать? + +Необходимо избавиться от спамного контента и дубликатов контента. Дубликаты можно отловить используя Screaming Frog SEO Spider, просканировав сайт и проверив title и description. Далее необходимо избавится от спамного контента (неинформативного, генерированного, заимствованного и пр.), снизить плотность вхождения ключей, избавиться от явного акцентирования текста на коммерческих ключах, проверить структуру хеддингов, переписать title и description в сторону уменьшения вхождения ключей. Так же избавляемся от неуникального контента, уникализируем изображения. diff --git a/docs/info/sanctions/google/penguin.md b/docs/info/sanctions/google/penguin.md new file mode 100644 index 0000000..6836e29 --- /dev/null +++ b/docs/info/sanctions/google/penguin.md @@ -0,0 +1,27 @@ +--- +title: Фильтр Penguin +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Penguin, Поисковые системы, Санкции поисковых систем] + +order: 2 + +--- + +# Фильтр Penguin + +**Дата запуска**: апрель 2012 + +**Отслеживает**: ссылочный спам, ссылки с нерелевантных сайтов, ссылки с ссайтов соштрафами, «ядовитые» ссылки, ссылки с переоптимизированными анкорами. + +## Как работает? + +Отслеживает явное манипулирование ссылочным профилем сайта. Наказывает пессимизацией в выдаче за некачественное и неестественное ссылочное. С 2016 года стал составной частью алгоритма поисковой системы, поэтому работает не апдейтами, а в режиме реального времени. + +## Что делать + +Прекратить закупать дешевые нестественные ссылки, по которым нет и не может быть никаких кликов (сайты с минимальным трафиком). Необходимо провести аудит ссылочного профиля (выгрузив ссылки из вебмастера гугла), отказаться от «неестественных» ссылок с обилием ключей в анкоре, от ссылок с «некачественных» сайтов, от дублей ссылок с одной страницы, от сквозных ссылок и пр. При невозможности удаления таких ссылок обязательно сделать Disavow Links (отклонение ссылок) в Search консоли Гугла (вебмастере). Очень удобно делать список отклоняемых ссылок непосредственно в SemRush, Majestic (если есть у вас доступ). Так-же есть инструменты - помощники для аудита ссылочного профиля, например SEO SpyGlass. Однако наиболее правильно - выполнить аудит ссылочного профиля самостоятельно. diff --git a/docs/info/sanctions/google/pigeon.md b/docs/info/sanctions/google/pigeon.md new file mode 100644 index 0000000..03313cd --- /dev/null +++ b/docs/info/sanctions/google/pigeon.md @@ -0,0 +1,27 @@ +--- +title: Фильтр Pigeon +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Pigeon, Поисковые системы, Санкции поисковых систем] + +order: 4 + +--- + +# Фильтр Pigeon + +**Дата запуска**: июль - декабрь 2014 + +**Отслеживает**: некачественное on и off - site SEO, влияющее на региональную выдачу. + +## Как работает + +Оказал сильное влияние на региональную выдачу, отслеживая некачественные внешние ссылки и сигналы и переоптимизацию страниц сайта. Алгоритм тесно увязал региональную выдачу и общую органик - выдачу: традиционные алгоритмы ранжирования и фильтров стали обширно применяться в региональной выдаче. + +## Что делать + +Для доминации в региональной выдаче необходимо делать качественное SEO, опираясь на реалии общей выдачи поисковой системы. Кроме того, необходимо привязать сайт в вебмастере к региону, строить ссылочное с региональных бизнес ресурсов и «желтых» каталогов сайтов, для коммерческих ресурсов широко использовать «Google Мой бизнес», переработать страницу контактов, добавив карту Google с адресом компании, обилие фотографий предприятия и коллектива, проводить offline работу по продвижению бизнеса и сайта (реклама того же QR-кода на листовках, визитках, флаерах и пр). Обязательно работать с отзывами клиентов. Внедрять на сайт метки геолокации, в том числе телефонные номера с кодом региона. diff --git a/docs/info/sanctions/google/possum.md b/docs/info/sanctions/google/possum.md new file mode 100644 index 0000000..5895306 --- /dev/null +++ b/docs/info/sanctions/google/possum.md @@ -0,0 +1,29 @@ +--- +title: Фильтр Possum +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, Possum, Поисковые системы, Санкции поисковых систем] + +order: 7 + +--- + +# Фильтр Possum + +**Дата запуска**: сентябрь 2016 + +**Отслеживает**: некачественный и спамный контент в локальной выдаче. Убирает монополию компаний в результатах локального поиска (1 компания - 1 место в выдаче, вместо нескольких страниц одной компании). + +## Как работает + +Алгоритм направлен, в основном, на малый бизнес и некрупные региональные компании. Увеличивает число компаний в локальной выдаче, в зависимости от места запроса (координат)пользователя. Отслеживает спамный контент и удаляет его из выдачи. Удаляет дубли представлений компании в выдаче. В августе 2017 алгоритм подвергся модификации, получивший название «Hawk», который применяет более строгие правила фильтрации компаний. + +## Что делать + +Проверьте ранжирование ваших важных ключей, используя местный поиск. Очень удобным инструментом для отслеживания местного (локального) поиска является Ad Preview. Кроме того существует десяток программ, позволяющих собирать и анализировать местную выдачу. + +После проведения анализа ключей в местной выдачей проводим стандартную работу по их продвижению, в случае их низких показателей, используя геометки. diff --git a/docs/info/sanctions/google/rank-brain.md b/docs/info/sanctions/google/rank-brain.md new file mode 100644 index 0000000..8b513a1 --- /dev/null +++ b/docs/info/sanctions/google/rank-brain.md @@ -0,0 +1,27 @@ +--- +title: Фильтр RankBrain +author: + +- name: DrMax.su + url: https://drmax.su/ + +category: Google +tag: [Google, RankBrain, Поисковые системы, Санкции поисковых систем] + +order: 6 + +--- + +# Фильтр RankBrain + +**Дата запуска** : октябрь 2015 + +**Отслеживает**: релевантность запросов контенту, штрафует за некачественное или бесполезное содержание, понижает в выдаче сайты с неудобным пользовательским интерфейсом (User Experience Design). + +## Как работает + +RankBrain - самообучающаяся система с искусственным интеллектом, поддерживающая обработку результатов поиска Google и обеспечивающая более релевантные результаты для пользователей. Если RankBrain видит слово или фразу, но не знаком с ней, алгоритм может сделать предположение относительно того, какие слова или фразы могут иметь аналогичный смысл и фильтровать результат, что соответственно делает его более эффективным при обработке поисковых запросов, которые ещё никогда не задавали пользователи. В автономном (офлайн) режиме RankBrain получает данные о прошлых поисковых запросах и, анализируя их, узнаёт, как настроить результаты поиска. После того как результаты RankBrain проверяются командой Google, система обновляется и вновь работает в режиме реального времени. Google называет RankBrain третьим по важности рейтинговым фактором. + +## Что делать + +Использовать на сайте более разнообразный и качественный (полезный) контент. Выполнить конкурентный анализ с использованием методик TF-IDF, следовать за ТОПом. Нанять хорошего UX - дизайнера и модифицировать интерфейс и бизнес-логику сайта. Для анализа подойдет софт: WebSite Auditor, Мегаиндекс, Allsubmitter (частично) и многие другие программы и онлайн сервисы. diff --git a/docs/info/search_optimization/README.md b/docs/info/search_optimization/README.md index 23b65cf..94bfa70 100644 --- a/docs/info/search_optimization/README.md +++ b/docs/info/search_optimization/README.md @@ -1,5 +1,6 @@ --- title: Поисковая оптимизация +icon: brands fa-searchengin index: false collapsable: false --- diff --git a/docs/info/search_optimization/semantic_core/1.png b/docs/info/search_optimization/semantic-core-1.png similarity index 100% rename from docs/info/search_optimization/semantic_core/1.png rename to docs/info/search_optimization/semantic-core-1.png diff --git a/docs/info/search_optimization/semantic_core/2.jpg b/docs/info/search_optimization/semantic-core-2.jpg similarity index 100% rename from docs/info/search_optimization/semantic_core/2.jpg rename to docs/info/search_optimization/semantic-core-2.jpg diff --git a/docs/info/search_optimization/semantic_core/README.md b/docs/info/search_optimization/semantic-core.md similarity index 98% rename from docs/info/search_optimization/semantic_core/README.md rename to docs/info/search_optimization/semantic-core.md index f42ac97..f42b27a 100644 --- a/docs/info/search_optimization/semantic_core/README.md +++ b/docs/info/search_optimization/semantic-core.md @@ -1,6 +1,7 @@ --- title: Семантическое ядро description: Семантическое ядро +icon: brands fa-searchengin category: Семантическое ядро tag: [Семантическое ядро] --- @@ -23,7 +24,7 @@ tag: [Семантическое ядро] Если веб-сайт небольшой (до 100 страниц), то проработать семантику можно и без особых инструментов, используя только сервис Wordstat. Для удобства установите плагин WordStater либо его аналоги, которые помогут удобно работать с фразами. -![Картинка](./1.png) +![Картинка](./semantic-core-1.png) Если веб-сайт довольно объемный или в тематике существует достаточно большое количество разнообразных поисковых запросов, то вам потребуются особые программы и сервисы, которые содержат готовые базы ключей либо имеют больше возможностей для автоматического сбора запросов. @@ -40,7 +41,7 @@ tag: [Семантическое ядро] KeyCollector парсит статистику из «Yandex.Wordstat» по ключевым словам, поданным на вход. Можно собирать данные как из левой колонки (в какие еще поисковые фразы заходит введенное ключевое слово), так и из правой (какие еще похожие запросы вводили в поиск люди). Чем больше семантическое ядро, тем больше будет нужно времени на его чистку от нерелевантных запросов и кластеризацию. -![Картинка](./2.jpg) +![Картинка](./semantic-core-2.jpg) Примерный процесс сбора семантического ядра: diff --git a/docs/info/yandex/README.md b/docs/info/yandex/README.md index 052dae7..48c2f1d 100644 --- a/docs/info/yandex/README.md +++ b/docs/info/yandex/README.md @@ -1,6 +1,8 @@ --- title: Яндекс description: Яндекс +icon: brands fa-yandex-international +index: false --- # Яндекс diff --git a/docs/info/yandex/metrika.md b/docs/info/yandex/metrika.md index f4c5f2a..d5e88c4 100644 --- a/docs/info/yandex/metrika.md +++ b/docs/info/yandex/metrika.md @@ -1,6 +1,7 @@ --- title: Яндекс Метрика description: Яндекс Метрика +icon: brands fa-yandex category: Яндекс tag: [Яндекс, Метрика, Счетчики] --- diff --git a/docs/info/yandex/yati.md b/docs/info/yandex/yati.md new file mode 100644 index 0000000..ae2294b --- /dev/null +++ b/docs/info/yandex/yati.md @@ -0,0 +1,24 @@ +--- +title: Поиск Яндекса с помощью YaTI +description: Поиск Яндекса для программистов стал точнее +icon: brands fa-connectdevelop +category: Яндекс +tag: [Яндекс, Поиск] +--- + +# Поиск Яндекса для программистов стал точнее + +![Картинка](./yati1.png) + +Что было: В Поиске работает нейросеть YaTI. Она ищет в интернете не по словам, а по смыслу. YaTI связывает запросы с информацией на страницах и понимает, что фразы «парк развлечений» и «американские горки» близки по значению. + + + +Промо на сайте Яндекса [CS YATI](https://yandex.ru/promo/unisearch/cs_search) + +Что теперь: YaTI делает то же самое, но с документацией разработчиков. Она изучила сайты для программистов и связала их со специализированными поисковыми запросами. В этом помогли эксперты-программисты, которые показали наиболее релевантные документы, и новая нейросеть — CS YaTI. То есть Computer Science YaTI. + +Бонус: В Поиске появился новый, более подробный блок с ответами из Stack Overflow. В нём не только ответ, но и сам код. + +Также можно почитать подробнее на [Хабре](https://habr.com/ru/company/yandex/blog/688952/) + diff --git a/docs/info/yandex/yati1.png b/docs/info/yandex/yati1.png new file mode 100644 index 0000000..5383b76 Binary files /dev/null and b/docs/info/yandex/yati1.png differ diff --git a/package-lock.json b/package-lock.json index bcaec38..977172c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@vuepress/plugin-search": "^2.0.0-beta.51", "vue": "^3.2.39", "vuepress": "2.0.0-beta.51", + "vuepress-plugin-components": "^2.0.0-beta.103", "vuepress-plugin-sitemap2": "^2.0.0-beta.103", "vuepress-theme-hope": "2.0.0-beta.103" } @@ -1674,10 +1675,26 @@ "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==", "dev": true }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", + "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", - "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", + "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", "cpu": [ "loong64" ], @@ -2735,9 +2752,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.11.tgz", - "integrity": "sha512-5lHp6DgRodxlBLSkzHOTcufWFflH1ewfy2hvFQyjrblBFlP/0Yh4O/Wrg4ow8WRlN3AAUFFLAQwX8hTptzqVHg==", + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "funding": [ { @@ -2750,8 +2767,8 @@ } ], "dependencies": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001399", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -3000,9 +3017,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001402", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz", - "integrity": "sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==", + "version": "1.0.30001409", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", + "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==", "dev": true, "funding": [ { @@ -4197,9 +4214,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.254", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", - "integrity": "sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==", + "version": "1.4.258", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz", + "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==", "dev": true }, "node_modules/entities": { @@ -4227,22 +4244,22 @@ } }, "node_modules/es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz", + "integrity": "sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.2", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.6", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -4252,6 +4269,7 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" @@ -4281,9 +4299,9 @@ } }, "node_modules/esbuild": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", - "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", + "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "hasInstallScript": true, "bin": { @@ -4293,33 +4311,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.7", - "esbuild-android-64": "0.15.7", - "esbuild-android-arm64": "0.15.7", - "esbuild-darwin-64": "0.15.7", - "esbuild-darwin-arm64": "0.15.7", - "esbuild-freebsd-64": "0.15.7", - "esbuild-freebsd-arm64": "0.15.7", - "esbuild-linux-32": "0.15.7", - "esbuild-linux-64": "0.15.7", - "esbuild-linux-arm": "0.15.7", - "esbuild-linux-arm64": "0.15.7", - "esbuild-linux-mips64le": "0.15.7", - "esbuild-linux-ppc64le": "0.15.7", - "esbuild-linux-riscv64": "0.15.7", - "esbuild-linux-s390x": "0.15.7", - "esbuild-netbsd-64": "0.15.7", - "esbuild-openbsd-64": "0.15.7", - "esbuild-sunos-64": "0.15.7", - "esbuild-windows-32": "0.15.7", - "esbuild-windows-64": "0.15.7", - "esbuild-windows-arm64": "0.15.7" + "@esbuild/android-arm": "0.15.9", + "@esbuild/linux-loong64": "0.15.9", + "esbuild-android-64": "0.15.9", + "esbuild-android-arm64": "0.15.9", + "esbuild-darwin-64": "0.15.9", + "esbuild-darwin-arm64": "0.15.9", + "esbuild-freebsd-64": "0.15.9", + "esbuild-freebsd-arm64": "0.15.9", + "esbuild-linux-32": "0.15.9", + "esbuild-linux-64": "0.15.9", + "esbuild-linux-arm": "0.15.9", + "esbuild-linux-arm64": "0.15.9", + "esbuild-linux-mips64le": "0.15.9", + "esbuild-linux-ppc64le": "0.15.9", + "esbuild-linux-riscv64": "0.15.9", + "esbuild-linux-s390x": "0.15.9", + "esbuild-netbsd-64": "0.15.9", + "esbuild-openbsd-64": "0.15.9", + "esbuild-sunos-64": "0.15.9", + "esbuild-windows-32": "0.15.9", + "esbuild-windows-64": "0.15.9", + "esbuild-windows-arm64": "0.15.9" } }, "node_modules/esbuild-android-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", - "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", + "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", "cpu": [ "x64" ], @@ -4333,9 +4352,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", - "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", + "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", "cpu": [ "arm64" ], @@ -4349,9 +4368,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", - "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", + "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "cpu": [ "x64" ], @@ -4365,9 +4384,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", - "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", + "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", "cpu": [ "arm64" ], @@ -4381,9 +4400,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", - "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", + "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", "cpu": [ "x64" ], @@ -4397,9 +4416,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", - "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", + "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", "cpu": [ "arm64" ], @@ -4413,9 +4432,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", - "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", + "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", "cpu": [ "ia32" ], @@ -4429,9 +4448,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", - "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", + "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", "cpu": [ "x64" ], @@ -4445,9 +4464,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", - "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", + "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", "cpu": [ "arm" ], @@ -4461,9 +4480,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", - "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", + "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", "cpu": [ "arm64" ], @@ -4477,9 +4496,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", - "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", + "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", "cpu": [ "mips64el" ], @@ -4493,9 +4512,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", - "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", + "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", "cpu": [ "ppc64" ], @@ -4509,9 +4528,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", - "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", + "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", "cpu": [ "riscv64" ], @@ -4525,9 +4544,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", - "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", + "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", "cpu": [ "s390x" ], @@ -4541,9 +4560,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", - "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", + "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", "cpu": [ "x64" ], @@ -4557,9 +4576,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", - "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", + "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", "cpu": [ "x64" ], @@ -4573,9 +4592,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", - "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", + "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", "cpu": [ "x64" ], @@ -4589,9 +4608,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", - "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", + "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", "cpu": [ "ia32" ], @@ -4605,9 +4624,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", - "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", + "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", "cpu": [ "x64" ], @@ -4621,9 +4640,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", - "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", + "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", "cpu": [ "arm64" ], @@ -4732,6 +4751,33 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -5196,9 +5242,9 @@ } }, "node_modules/idb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", - "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", + "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==", "dev": true }, "node_modules/ieee754": { @@ -6013,15 +6059,12 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/minimatch": { @@ -6201,15 +6244,15 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6579,30 +6622,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6629,9 +6648,9 @@ "dev": true }, "node_modules/rollup": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz", - "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -6707,6 +6726,20 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -6714,9 +6747,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.54.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz", - "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", + "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -9702,10 +9735,17 @@ "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==", "dev": true }, + "@esbuild/android-arm": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", + "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "dev": true, + "optional": true + }, "@esbuild/linux-loong64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", - "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", + "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", "dev": true, "optional": true }, @@ -10613,13 +10653,13 @@ "dev": true }, "autoprefixer": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.11.tgz", - "integrity": "sha512-5lHp6DgRodxlBLSkzHOTcufWFflH1ewfy2hvFQyjrblBFlP/0Yh4O/Wrg4ow8WRlN3AAUFFLAQwX8hTptzqVHg==", + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "requires": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001399", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -10788,9 +10828,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001402", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz", - "integrity": "sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==", + "version": "1.0.30001409", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", + "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==", "dev": true }, "chalk": { @@ -11743,9 +11783,9 @@ } }, "electron-to-chromium": { - "version": "1.4.254", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", - "integrity": "sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==", + "version": "1.4.258", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz", + "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==", "dev": true }, "entities": { @@ -11761,22 +11801,22 @@ "dev": true }, "es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz", + "integrity": "sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.2", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.6", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -11786,6 +11826,7 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" @@ -11803,171 +11844,172 @@ } }, "esbuild": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", - "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", - "dev": true, - "requires": { - "@esbuild/linux-loong64": "0.15.7", - "esbuild-android-64": "0.15.7", - "esbuild-android-arm64": "0.15.7", - "esbuild-darwin-64": "0.15.7", - "esbuild-darwin-arm64": "0.15.7", - "esbuild-freebsd-64": "0.15.7", - "esbuild-freebsd-arm64": "0.15.7", - "esbuild-linux-32": "0.15.7", - "esbuild-linux-64": "0.15.7", - "esbuild-linux-arm": "0.15.7", - "esbuild-linux-arm64": "0.15.7", - "esbuild-linux-mips64le": "0.15.7", - "esbuild-linux-ppc64le": "0.15.7", - "esbuild-linux-riscv64": "0.15.7", - "esbuild-linux-s390x": "0.15.7", - "esbuild-netbsd-64": "0.15.7", - "esbuild-openbsd-64": "0.15.7", - "esbuild-sunos-64": "0.15.7", - "esbuild-windows-32": "0.15.7", - "esbuild-windows-64": "0.15.7", - "esbuild-windows-arm64": "0.15.7" + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", + "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.9", + "@esbuild/linux-loong64": "0.15.9", + "esbuild-android-64": "0.15.9", + "esbuild-android-arm64": "0.15.9", + "esbuild-darwin-64": "0.15.9", + "esbuild-darwin-arm64": "0.15.9", + "esbuild-freebsd-64": "0.15.9", + "esbuild-freebsd-arm64": "0.15.9", + "esbuild-linux-32": "0.15.9", + "esbuild-linux-64": "0.15.9", + "esbuild-linux-arm": "0.15.9", + "esbuild-linux-arm64": "0.15.9", + "esbuild-linux-mips64le": "0.15.9", + "esbuild-linux-ppc64le": "0.15.9", + "esbuild-linux-riscv64": "0.15.9", + "esbuild-linux-s390x": "0.15.9", + "esbuild-netbsd-64": "0.15.9", + "esbuild-openbsd-64": "0.15.9", + "esbuild-sunos-64": "0.15.9", + "esbuild-windows-32": "0.15.9", + "esbuild-windows-64": "0.15.9", + "esbuild-windows-arm64": "0.15.9" } }, "esbuild-android-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", - "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", + "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", - "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", + "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", - "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", + "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", - "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", + "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", - "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", + "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", - "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", + "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", - "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", + "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", - "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", + "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", - "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", + "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", - "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", + "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", - "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", + "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", - "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", + "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", - "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", + "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", - "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", + "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", - "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", + "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", - "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", + "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", - "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", + "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", - "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", + "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", - "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", + "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", - "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", + "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", "dev": true, "optional": true }, @@ -12034,6 +12076,23 @@ "onetime": "^6.0.0", "signal-exit": "^3.0.7", "strip-final-newline": "^3.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + } } }, "extend-shallow": { @@ -12384,9 +12443,9 @@ } }, "idb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", - "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", + "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==", "dev": true }, "ieee754": { @@ -12989,9 +13048,9 @@ "dev": true }, "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -13120,12 +13179,12 @@ } }, "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "mimic-fn": "^4.0.0" + "mimic-fn": "^2.1.0" } }, "ora": { @@ -13390,23 +13449,6 @@ "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - } } }, "reusify": { @@ -13428,9 +13470,9 @@ "dev": true }, "rollup": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz", - "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -13469,6 +13511,17 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -13476,9 +13529,9 @@ "dev": true }, "sass": { - "version": "1.54.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz", - "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", + "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index c8e86e0..f2ded79 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@vuepress/plugin-search": "^2.0.0-beta.51", "vue": "^3.2.39", "vuepress": "2.0.0-beta.51", + "vuepress-plugin-components": "^2.0.0-beta.103", "vuepress-plugin-sitemap2": "^2.0.0-beta.103", "vuepress-theme-hope": "2.0.0-beta.103" } diff --git a/public/.htacess b/public/.htacess new file mode 100644 index 0000000..961d3ed --- /dev/null +++ b/public/.htacess @@ -0,0 +1 @@ +ErrorDocument 404 https://seo-recipes.ru/404.html diff --git a/public/robots.txt b/public/robots.txt index c2a49f4..818f10f 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,2 +1,4 @@ User-agent: * Allow: / + +Disallow: /404.html \ No newline at end of file diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..f517319 --- /dev/null +++ b/vercel.json @@ -0,0 +1,12 @@ +{ + "routes": [ + { + "handle": "filesystem" + }, + { + "src": "/(.*)", + "status": 404, + "dest": "/404.html" + } + ] +} diff --git a/vuepress.client.ts b/vuepress.client.ts index 64ea530..60d49b3 100644 --- a/vuepress.client.ts +++ b/vuepress.client.ts @@ -2,7 +2,13 @@ import { defineClientConfig } from '@vuepress/client' export default defineClientConfig({ enhance({ app, router, siteData }) { - + router.beforeEach((to, from, next) => { + if (to.name == '404') { + next('404'); + } else { + next(); + } + }); }, setup() { diff --git a/vuepress.config.ts b/vuepress.config.ts index 2f7b2b6..ac9cb84 100644 --- a/vuepress.config.ts +++ b/vuepress.config.ts @@ -1,5 +1,4 @@ import { defineUserConfig } from 'vuepress' -import { prismjsPlugin } from '@vuepress/plugin-prismjs' import { hopeTheme } from "vuepress-theme-hope"; import { searchPlugin } from "@vuepress/plugin-search"; import { SitemapOptions } from "vuepress-plugin-sitemap2"; @@ -52,6 +51,7 @@ export default defineUserConfig({ '/info/': "structure", '/': [""], }, + sidebarSorter: ["readme", "order", "title"], iconAssets: "fontawesome", backToTop: true, footer: '', @@ -70,6 +70,8 @@ export default defineUserConfig({ }, sitemap: { hostname: 'https://seo-recipes.ru/', canonicalTag: true }, pwa: { favicon: '/favicon.ico', manifest: { lang: 'ru-RU' } }, + components: ["YouTube"], + prismjs: true, } }), locales: { @@ -81,9 +83,6 @@ export default defineUserConfig({ }, public: `./public`, plugins: [ - prismjsPlugin({ - preloadLanguages: ['php', 'js', 'ts'] - }), searchPlugin(), ], })