From 5a78eb903c794a786233c2d63806752d7fc7a48a Mon Sep 17 00:00:00 2001 From: Hydra Date: Wed, 1 May 2024 00:59:24 +0100 Subject: [PATCH 01/12] feat: adding online-fix modal --- .../src/components/backdrop/backdrop.css.ts | 47 +++++++++++++++++++ .../src/components/backdrop/backdrop.tsx | 12 +++++ .../src/components/modal/modal.css.ts | 44 ----------------- src/renderer/src/components/modal/modal.tsx | 5 +- .../src/pages/game-details/game-details.tsx | 3 ++ .../online-fix-installation-guide.tsx | 21 +++++++++ 6 files changed, 86 insertions(+), 46 deletions(-) create mode 100644 src/renderer/src/components/backdrop/backdrop.css.ts create mode 100644 src/renderer/src/components/backdrop/backdrop.tsx create mode 100644 src/renderer/src/pages/game-details/online-fix-installation-guide.tsx diff --git a/src/renderer/src/components/backdrop/backdrop.css.ts b/src/renderer/src/components/backdrop/backdrop.css.ts new file mode 100644 index 00000000..0a7b61bb --- /dev/null +++ b/src/renderer/src/components/backdrop/backdrop.css.ts @@ -0,0 +1,47 @@ +import { keyframes } from "@vanilla-extract/css"; +import { recipe } from "@vanilla-extract/recipes"; +import { SPACING_UNIT } from "../../theme.css"; + +export const backdropFadeIn = keyframes({ + "0%": { backdropFilter: "blur(0px)", backgroundColor: "rgba(0, 0, 0, 0.5)" }, + "100%": { + backdropFilter: "blur(2px)", + backgroundColor: "rgba(0, 0, 0, 0.7)", + }, +}); + +export const backdropFadeOut = keyframes({ + "0%": { backdropFilter: "blur(2px)", backgroundColor: "rgba(0, 0, 0, 0.7)" }, + "100%": { + backdropFilter: "blur(0px)", + backgroundColor: "rgba(0, 0, 0, 0)", + }, +}); + +export const backdrop = recipe({ + base: { + animationName: backdropFadeIn, + animationDuration: "0.4s", + backgroundColor: "rgba(0, 0, 0, 0.7)", + position: "absolute", + width: "100%", + height: "100%", + display: "flex", + justifyContent: "center", + alignItems: "center", + zIndex: 1, + top: 0, + padding: `${SPACING_UNIT * 3}px`, + backdropFilter: "blur(2px)", + transition: "all ease 0.2s", + }, + variants: { + closing: { + true: { + animationName: backdropFadeOut, + backdropFilter: "blur(0px)", + backgroundColor: "rgba(0, 0, 0, 0)", + }, + }, + }, +}); diff --git a/src/renderer/src/components/backdrop/backdrop.tsx b/src/renderer/src/components/backdrop/backdrop.tsx new file mode 100644 index 00000000..5852d59d --- /dev/null +++ b/src/renderer/src/components/backdrop/backdrop.tsx @@ -0,0 +1,12 @@ +import * as styles from "./backdrop.css"; + +export interface BackdropProps { + isClosing?: boolean; + children: React.ReactNode; +} + +export function Backdrop({ isClosing = false, children }: BackdropProps) { + return ( +
{children}
+ ); +} diff --git a/src/renderer/src/components/modal/modal.css.ts b/src/renderer/src/components/modal/modal.css.ts index d6e4732d..37a3fef5 100644 --- a/src/renderer/src/components/modal/modal.css.ts +++ b/src/renderer/src/components/modal/modal.css.ts @@ -2,22 +2,6 @@ import { keyframes, style } from "@vanilla-extract/css"; import { recipe } from "@vanilla-extract/recipes"; import { SPACING_UNIT, vars } from "../../theme.css"; -export const backdropFadeIn = keyframes({ - "0%": { backdropFilter: "blur(0px)", backgroundColor: "rgba(0, 0, 0, 0.5)" }, - "100%": { - backdropFilter: "blur(2px)", - backgroundColor: "rgba(0, 0, 0, 0.7)", - }, -}); - -export const backdropFadeOut = keyframes({ - "0%": { backdropFilter: "blur(2px)", backgroundColor: "rgba(0, 0, 0, 0.7)" }, - "100%": { - backdropFilter: "blur(0px)", - backgroundColor: "rgba(0, 0, 0, 0)", - }, -}); - export const modalSlideIn = keyframes({ "0%": { opacity: 0 }, "100%": { @@ -32,34 +16,6 @@ export const modalSlideOut = keyframes({ }, }); -export const backdrop = recipe({ - base: { - animationName: backdropFadeIn, - animationDuration: "0.4s", - backgroundColor: "rgba(0, 0, 0, 0.7)", - position: "absolute", - width: "100%", - height: "100%", - display: "flex", - justifyContent: "center", - alignItems: "center", - zIndex: 1, - top: 0, - padding: `${SPACING_UNIT * 3}px`, - backdropFilter: "blur(2px)", - transition: "all ease 0.2s", - }, - variants: { - closing: { - true: { - animationName: backdropFadeOut, - backdropFilter: "blur(0px)", - backgroundColor: "rgba(0, 0, 0, 0)", - }, - }, - }, -}); - export const modal = recipe({ base: { animationName: modalSlideIn, diff --git a/src/renderer/src/components/modal/modal.tsx b/src/renderer/src/components/modal/modal.tsx index b8b4e7ef..7bfc0dcc 100644 --- a/src/renderer/src/components/modal/modal.tsx +++ b/src/renderer/src/components/modal/modal.tsx @@ -5,6 +5,7 @@ import { XIcon } from "@primer/octicons-react"; import * as styles from "./modal.css"; import { useAppDispatch } from "@renderer/hooks"; import { toggleDragging } from "@renderer/features"; +import { Backdrop } from "../backdrop/backdrop"; export interface ModalProps { visible: boolean; @@ -88,7 +89,7 @@ export function Modal({ if (!visible) return null; return createPortal( -
+
{children}
-
, + , document.body ); } diff --git a/src/renderer/src/pages/game-details/game-details.tsx b/src/renderer/src/pages/game-details/game-details.tsx index 59b25ba9..2f287e58 100644 --- a/src/renderer/src/pages/game-details/game-details.tsx +++ b/src/renderer/src/pages/game-details/game-details.tsx @@ -28,6 +28,7 @@ import * as styles from "./game-details.css"; import { HeroPanel } from "./hero-panel"; import { HowLongToBeatSection } from "./how-long-to-beat-section"; import { RepacksModal } from "./repacks-modal"; +import { OnlineFixInstallationGuide } from "./online-fix-installation-guide"; export function GameDetails() { const { objectID, shop } = useParams(); @@ -167,6 +168,8 @@ export function GameDetails() { return ( + {/* */} + {gameDetails && ( +
+

+ When asked for an extraction password for OnlineFix repacks, use the + following one: +

+ + + + + + + + ); +} From 68f5dd16ae04c2064df924c0c380f0c4c08ae189 Mon Sep 17 00:00:00 2001 From: FerNikoMF Date: Thu, 2 May 2024 13:17:42 +0500 Subject: [PATCH 02/12] added Russian language --- src/locales/index.ts | 1 + src/locales/ru/translation.json | 147 ++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 src/locales/ru/translation.json diff --git a/src/locales/index.ts b/src/locales/index.ts index 4653bcb5..209c4d4c 100644 --- a/src/locales/index.ts +++ b/src/locales/index.ts @@ -4,3 +4,4 @@ export { default as es } from "./es/translation.json"; export { default as fr } from "./fr/translation.json"; export { default as hu } from "./hu/translation.json"; export { default as it } from "./it/translation.json"; +export { default as ru } from "./ru/translation.json"; diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json new file mode 100644 index 00000000..c378199b --- /dev/null +++ b/src/locales/ru/translation.json @@ -0,0 +1,147 @@ +{ + "home": { + "featured": "Рекомендованное", + "recently_added": "Недавно добавленное", + "trending": "Тенденции", + "surprise_me": "Удиви меня", + "no_results": "Нет результатов" + }, + "sidebar": { + "catalogue": "Каталог", + "downloads": "Загрузки", + "settings": "Настройки", + "my_library": "Моя библиотека", + "downloading_metadata": "{{title}} (Загрузка метаданных…)", + "checking_files": "{{title}} ({{percentage}} - Проверка файлов…)", + "paused": "{{title}} (Приостановлено)", + "downloading": "{{title}} ({{percentage}} - Загрузка…)", + "filter": "Фильтр библиотеки", + "follow_us": "Подписывайтесь на нас", + "home": "Главная" + }, + "header": { + "search": "Поиск", + "home": "Главная", + "catalogue": "Каталог", + "downloads": "Загрузки", + "search_results": "Результаты поиска", + "settings": "Настройки" + }, + "bottom_panel": { + "no_downloads_in_progress": "Нет активных загрузок", + "downloading_metadata": "Загрузка метаданных {{title}}…", + "checking_files": "Проверка файлов {{title}}… ({{percentage}} завершено)", + "downloading": "Загрузка {{title}}… ({{percentage}} завершено) - Окончание {{eta}} - {{speed}}" + }, + "catalogue": { + "next_page": "Следующая страница", + "previous_page": "Предыдущая страница" + }, + "game_details": { + "open_download_options": "Открыть опции загрузки", + "download_options_zero": "Нет вариантов загрузки", + "download_options_one": "{{count}} вариант загрузки", + "download_options_other": "{{count}} вариантов загрузки", + "updated_at": "Обновлено {{updated_at}}", + "install": "Установить", + "resume": "Возобновить", + "pause": "Приостановить", + "cancel": "Отменить", + "remove": "Удалить", + "remove_from_list": "Удалить", + "space_left_on_disk": "{{space}} осталось на диске", + "eta": "Окончание {{eta}}", + "downloading_metadata": "Загрузка метаданных…", + "checking_files": "Проверка файлов…", + "filter": "Фильтр репаков", + "requirements": "Системные требования", + "minimum": "Минимальные", + "recommended": "Рекомендуемые", + "no_minimum_requirements": "{{title}} не предоставляет информации о минимальных требованиях", + "no_recommended_requirements": "{{title}} не предоставляет информации о рекомендуемых требованиях", + "paused_progress": "{{progress}} (Приостановлено)", + "release_date": "Выпущено в {{date}}", + "publisher": "Опубликовано {{publisher}}", + "copy_link_to_clipboard": "Скопировать ссылку", + "copied_link_to_clipboard": "Ссылка скопирована", + "hours": "часов", + "minutes": "минут", + "accuracy": "{{accuracy}}% точность", + "add_to_library": "Добавить в библиотеку", + "remove_from_library": "Удалить из библиотеки", + "no_downloads": "Нет доступных загрузок", + "play_time": "Сыграно {{amount}}", + "last_time_played": "Последний раз сыграно {{period}}", + "not_played_yet": "Вы еще не сыграли в {{title}}", + "next_suggestion": "Следующее предложение", + "play": "Играть", + "deleting": "Удаление установщика…", + "close": "Закрыть", + "playing_now": "Сейчас играет", + "change": "Изменить", + "repacks_modal_description": "Выберите репак, который хотите загрузить", + "downloads_path": "Путь загрузок", + "select_folder_hint": "Чтобы изменить папку по умолчанию, откройте", + "settings": "Настройки Hydra", + "download_now": "Загрузить сейчас" + }, + "activation": { + "title": "Активировать Hydra", + "installation_id": "ID установки:", + "enter_activation_code": "Введите ваш активационный код", + "message": "Если вы не знаете, где его запросить, то не должны иметь это.", + "activate": "Активировать", + "loading": "Загрузка…" + }, + "downloads": { + "resume": "Возобновить", + "pause": "Приостановить", + "eta": "Окончание {{eta}}", + "paused": "Приостановлено", + "verifying": "Проверка…", + "completed_at": "Завершено в {{date}}", + "completed": "Завершено", + "cancelled": "Отменено", + "download_again": "Загрузить снова", + "cancel": "Отменить", + "filter": "Фильтр загруженных игр", + "remove": "Удалить", + "downloading_metadata": "Загрузка метаданных…", + "checking_files": "Проверка файлов…", + "starting_download": "Начало загрузки…", + "deleting": "Удаление установщика…", + "delete": "Удалить установщик", + "remove_from_list": "Удалить", + "delete_modal_title": "Вы уверены?", + "delete_modal_description": "Это удалит все установочные файлы с вашего компьютера", + "install": "Установить" + }, + "settings": { + "downloads_path": "Путь загрузок", + "change": "Изменить", + "notifications": "Уведомления", + "enable_download_notifications": "Когда загрузка завершена", + "enable_repack_list_notifications": "Когда новый репак добавлен", + "telemetry": "Телеметрия", + "telemetry_description": "Включить анонимную статистику использования" + }, + "notifications": { + "download_complete": "Загрузка завершена", + "game_ready_to_install": "{{title}} готова к установке", + "repack_list_updated": "Список репаков обновлен", + "repack_count_one": "{{count}} репак добавлен", + "repack_count_other": "{{count}} репаков добавлено" + }, + "system_tray": { + "open": "Открыть Hydra", + "quit": "Выйти" + }, + "game_card": { + "no_downloads": "Нет доступных загрузок" + }, + "binary_not_found_modal": { + "title": "Программы не установлены", + "description": "Исполняемые файлы Wine или Lutris не найдены на вашей системе", + "instructions": "Узнайте правильный способ установить любой из них на вашем дистрибутиве Linux, чтобы игра могла нормально работать" + } +} From 2c3e7681017eab97256bad197afe7be23f77cab3 Mon Sep 17 00:00:00 2001 From: FerNikoMF Date: Thu, 2 May 2024 19:22:59 +0500 Subject: [PATCH 03/12] . --- src/locales/ru/translation.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json index c378199b..1af29e2c 100644 --- a/src/locales/ru/translation.json +++ b/src/locales/ru/translation.json @@ -4,7 +4,7 @@ "recently_added": "Недавно добавленное", "trending": "Тенденции", "surprise_me": "Удиви меня", - "no_results": "Нет результатов" + "no_results": "Результатов не найдено" }, "sidebar": { "catalogue": "Каталог", @@ -15,7 +15,7 @@ "checking_files": "{{title}} ({{percentage}} - Проверка файлов…)", "paused": "{{title}} (Приостановлено)", "downloading": "{{title}} ({{percentage}} - Загрузка…)", - "filter": "Фильтр библиотеки", + "filter": "Фильтровать библиотеку", "follow_us": "Подписывайтесь на нас", "home": "Главная" }, @@ -104,7 +104,7 @@ "cancelled": "Отменено", "download_again": "Загрузить снова", "cancel": "Отменить", - "filter": "Фильтр загруженных игр", + "filter": "Фильтровать загруженные игры", "remove": "Удалить", "downloading_metadata": "Загрузка метаданных…", "checking_files": "Проверка файлов…", @@ -118,10 +118,10 @@ }, "settings": { "downloads_path": "Путь загрузок", - "change": "Изменить", + "change": "Изменить путь", "notifications": "Уведомления", - "enable_download_notifications": "Когда загрузка завершена", - "enable_repack_list_notifications": "Когда новый репак добавлен", + "enable_download_notifications": "По завершении загрузки", + "enable_repack_list_notifications": "При добавлении нового репака", "telemetry": "Телеметрия", "telemetry_description": "Включить анонимную статистику использования" }, From c41d748bf2840d4b60d0476310ad26002ec56e44 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 16:40:41 +0000 Subject: [PATCH 04/12] docs(contributor): contrib-readme-action has updated readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 27ca1b30..d35d6da2 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,13 @@ yarn make
Netflixy + + + + FerNikoMF +
+ Firdavs +
From 193cc327cfb97e11fc4809ce2764bd09532a6be6 Mon Sep 17 00:00:00 2001 From: Hydra Date: Thu, 2 May 2024 22:22:23 +0100 Subject: [PATCH 05/12] feat: adding installation instructions --- src/locales/en/translation.json | 20 +++- src/locales/pt/translation.json | 18 ++- src/main/constants.ts | 1 - src/main/events/helpers/search-games.ts | 2 +- src/renderer/index.html | 4 +- src/renderer/src/app.css.ts | 8 +- src/renderer/src/app.tsx | 21 +++- .../bottom-panel/bottom-panel.css.ts | 3 +- .../src/components/button/button.css.ts | 6 +- .../checkbox-field/checkbox-field.css.ts | 2 +- .../src/components/game-card/game-card.css.ts | 6 +- .../src/components/header/header.css.ts | 7 +- src/renderer/src/components/hero/hero.css.ts | 7 +- src/renderer/src/components/hero/hero.tsx | 4 +- .../src/components/modal/modal.css.ts | 11 +- src/renderer/src/components/modal/modal.tsx | 16 ++- .../src/components/sidebar/sidebar.css.ts | 14 +-- .../src/components/sidebar/sidebar.tsx | 35 +++--- .../components/text-field/text-field.css.ts | 3 +- .../src/components/text-field/text-field.tsx | 10 +- src/renderer/src/features/window-slice.ts | 4 +- src/renderer/src/helpers.ts | 3 + .../src/pages/catalogue/catalogue.tsx | 6 +- .../src/pages/downloads/downloads.css.ts | 4 +- .../pages/game-details/description-header.tsx | 56 +++++----- .../pages/game-details/game-details.css.ts | 17 ++- .../src/pages/game-details/game-details.tsx | 62 ++++++++--- .../hero/hero-panel-actions.css.ts | 7 ++ .../{ => hero}/hero-panel-actions.tsx | 47 +++++++- .../game-details/{ => hero}/hero-panel.css.ts | 6 +- .../game-details/{ => hero}/hero-panel.tsx | 9 +- .../src/pages/game-details/hero/index.ts | 1 + .../game-details/how-long-to-beat-section.tsx | 2 +- .../installation-guides/constants.ts | 3 + .../dodi-installation-guide.css.ts | 31 ++++++ .../dodi-installation-guide.tsx | 74 +++++++++++++ .../game-details/installation-guides/index.ts | 3 + .../online-fix-installation-guide.css.ts | 7 ++ .../online-fix-installation-guide.tsx | 103 ++++++++++++++++++ .../online-fix-installation-guide.tsx | 20 ---- .../src/pages/game-details/repacks-modal.tsx | 62 +++++------ .../game-details/select-folder-modal.css.tsx | 10 +- .../game-details/select-folder-modal.tsx | 16 ++- .../src/pages/settings/settings.css.ts | 4 +- src/renderer/src/theme.css.ts | 3 +- 45 files changed, 554 insertions(+), 204 deletions(-) create mode 100644 src/renderer/src/pages/game-details/hero/hero-panel-actions.css.ts rename src/renderer/src/pages/game-details/{ => hero}/hero-panel-actions.tsx (79%) rename src/renderer/src/pages/game-details/{ => hero}/hero-panel.css.ts (81%) rename src/renderer/src/pages/game-details/{ => hero}/hero-panel.tsx (97%) create mode 100644 src/renderer/src/pages/game-details/hero/index.ts create mode 100644 src/renderer/src/pages/game-details/installation-guides/constants.ts create mode 100644 src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.css.ts create mode 100644 src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx create mode 100644 src/renderer/src/pages/game-details/installation-guides/index.ts create mode 100644 src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.css.ts create mode 100644 src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx delete mode 100644 src/renderer/src/pages/game-details/online-fix-installation-guide.tsx diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 03f00a0d..03dd4b6d 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -17,7 +17,10 @@ "downloading": "{{title}} ({{percentage}} - Downloading…)", "filter": "Filter library", "follow_us": "Follow us", - "home": "Home" + "home": "Home", + "discord": "Join our Discord", + "x": "Follow on X", + "github": "Contribute on GitHub" }, "header": { "search": "Search", @@ -82,8 +85,16 @@ "repacks_modal_description": "Choose the repack you want to download", "downloads_path": "Downloads path", "select_folder_hint": "To change the default folder, access the", - "settings": "Hydra settings", - "download_now": "Download now" + "settings": "Settings", + "download_now": "Download now", + "installation_instructions": "Installation Instructions", + "installation_instructions_description": "Additional steps are required to install this game", + "online_fix_instruction": "OnlineFix games requires a password to be extracted. When required, use the following password:", + "dodi_installation_instruction": "When you open DODI installer, press your keyboard up key <0 /> to start the installation process:", + "dont_show_it_again": "Don't show it again", + "copy_to_clipboard": "Copy", + "copied_to_clipboard": "Copied", + "got_it": "Got it" }, "activation": { "title": "Activate Hydra", @@ -143,5 +154,8 @@ "title": "Programs not installed", "description": "Wine or Lutris executables were not found on your system", "instructions": "Check the correct way to install any of them on your Linux distro so that the game can run normally" + }, + "modal": { + "close": "Close button" } } diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json index 270e0451..df27fa34 100644 --- a/src/locales/pt/translation.json +++ b/src/locales/pt/translation.json @@ -17,7 +17,10 @@ "downloading": "{{title}} ({{percentage}} - Baixando…)", "filter": "Filtrar biblioteca", "home": "Início", - "follow_us": "Acompanhe-nos" + "follow_us": "Acompanhe-nos", + "discord": "Entre no nosso Discord", + "x": "Siga-nos no X", + "github": "Contribua no GitHub" }, "header": { "search": "Buscar", @@ -79,7 +82,15 @@ "downloads_path": "Diretório do download", "select_folder_hint": "Para trocar a pasta padrão, acesse as ", "settings": "Configurações do Hydra", - "download_now": "Baixe agora" + "download_now": "Baixe agora", + "installation_instructions": "Instruções de Instalação", + "installation_instructions_description": "Passos adicionais são necessários para instalar esse jogos", + "online_fix_instruction": "Jogos OnlineFix precisam de uma senha para serem extraídos. Quando solicitado, utilize a seguinte senha:", + "dodi_installation_instruction": "Quando o instalador do DODI for aberto, pressione a seta para cima <0 /> do teclado para iniciar o processo de instalação:", + "dont_show_it_again": "Não mostrar novamente", + "copy_to_clipboard": "Copiar", + "copied_to_clipboard": "Copiado", + "got_it": "Entendi" }, "activation": { "title": "Ativação", @@ -143,5 +154,8 @@ "catalogue": { "next_page": "Próxima página", "previous_page": "Página anterior" + }, + "modal": { + "close": "Botão de fechar" } } diff --git a/src/main/constants.ts b/src/main/constants.ts index 92c4da04..1697279f 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -1,5 +1,4 @@ import { app } from "electron"; -import os from "node:os"; import path from "node:path"; export const repackersOn1337x = [ diff --git a/src/main/events/helpers/search-games.ts b/src/main/events/helpers/search-games.ts index f931b1d9..c4209add 100644 --- a/src/main/events/helpers/search-games.ts +++ b/src/main/events/helpers/search-games.ts @@ -8,7 +8,7 @@ import { stateManager } from "@main/state-manager"; const { Index } = flexSearch; const repacksIndex = new Index(); -const steamGamesIndex = new Index({ tokenize: "reverse" }); +const steamGamesIndex = new Index(); const repacks = stateManager.getValue("repacks"); const steamGames = stateManager.getValue("steamGames"); diff --git a/src/renderer/index.html b/src/renderer/index.html index 1917de45..3147179e 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -6,10 +6,10 @@ Hydra - +
diff --git a/src/renderer/src/app.css.ts b/src/renderer/src/app.css.ts index fc104adc..2a55f033 100644 --- a/src/renderer/src/app.css.ts +++ b/src/renderer/src/app.css.ts @@ -26,6 +26,7 @@ globalStyle("body", { overflow: "hidden", userSelect: "none", fontFamily: "'Fira Mono', monospace", + fontSize: vars.size.bodyFontSize, background: vars.color.background, color: vars.color.bodyText, margin: "0", @@ -36,13 +37,16 @@ globalStyle("button", { backgroundColor: "transparent", border: "none", fontFamily: "inherit", - fontSize: vars.size.bodyFontSize, }); globalStyle("h1, h2, h3, h4, h5, h6, p", { margin: 0, }); +globalStyle("p", { + lineHeight: "20px", +}); + globalStyle("#root, main", { display: "flex", }); @@ -103,5 +107,5 @@ export const titleBar = style({ padding: `0 ${SPACING_UNIT * 2}px`, WebkitAppRegion: "drag", zIndex: "2", - borderBottom: `1px solid ${vars.color.borderColor}`, + borderBottom: `1px solid ${vars.color.border}`, } as ComplexStyleRule); diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index 6461c0d0..d5331336 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -18,11 +18,16 @@ import { clearSearch, setUserPreferences, setRepackersFriendlyNames, + toggleDraggingDisabled, } from "@renderer/features"; document.body.classList.add(themeClass); -export function App({ children }: any) { +export interface AppProps { + children: React.ReactNode; +} + +export function App({ children }: AppProps) { const contentRef = useRef(null); const { updateLibrary } = useLibrary(); @@ -34,6 +39,9 @@ export function App({ children }: any) { const location = useLocation(); const search = useAppSelector((state) => state.search.value); + const draggingDisabled = useAppSelector( + (state) => state.window.draggingDisabled + ); useEffect(() => { Promise.all([ @@ -93,6 +101,17 @@ export function App({ children }: any) { if (contentRef.current) contentRef.current.scrollTop = 0; }, [location.pathname, location.search]); + useEffect(() => { + new MutationObserver(() => { + const modal = document.body.querySelector("[role=modal]"); + + dispatch(toggleDraggingDisabled(Boolean(modal))); + }).observe(document.body, { + attributes: false, + childList: true, + }); + }, [dispatch, draggingDisabled]); + return ( <> {window.electron.platform === "win32" && ( diff --git a/src/renderer/src/components/bottom-panel/bottom-panel.css.ts b/src/renderer/src/components/bottom-panel/bottom-panel.css.ts index f251d1c0..f339e0d5 100644 --- a/src/renderer/src/components/bottom-panel/bottom-panel.css.ts +++ b/src/renderer/src/components/bottom-panel/bottom-panel.css.ts @@ -3,13 +3,12 @@ import { SPACING_UNIT, vars } from "../../theme.css"; export const bottomPanel = style({ width: "100%", - borderTop: `solid 1px ${vars.color.borderColor}`, + borderTop: `solid 1px ${vars.color.border}`, padding: `${SPACING_UNIT / 2}px ${SPACING_UNIT * 2}px`, display: "flex", alignItems: "center", transition: "all ease 0.2s", justifyContent: "space-between", - fontSize: vars.size.bodyFontSize, zIndex: "1", }); diff --git a/src/renderer/src/components/button/button.css.ts b/src/renderer/src/components/button/button.css.ts index 18866bc0..2cc19776 100644 --- a/src/renderer/src/components/button/button.css.ts +++ b/src/renderer/src/components/button/button.css.ts @@ -3,7 +3,7 @@ import { SPACING_UNIT, vars } from "../../theme.css"; const base = style({ padding: `${SPACING_UNIT}px ${SPACING_UNIT * 2}px`, - backgroundColor: "#c0c1c7", + backgroundColor: vars.color.muted, borderRadius: "8px", border: "solid 1px transparent", transition: "all ease 0.2s", @@ -35,8 +35,8 @@ export const button = styleVariants({ base, { backgroundColor: "transparent", - border: "solid 1px #c0c1c7", - color: "#c0c1c7", + border: `solid 1px ${vars.color.border}`, + color: vars.color.muted, ":hover": { backgroundColor: "rgba(255, 255, 255, 0.1)", }, diff --git a/src/renderer/src/components/checkbox-field/checkbox-field.css.ts b/src/renderer/src/components/checkbox-field/checkbox-field.css.ts index 2b7cb77c..1aa7ee0e 100644 --- a/src/renderer/src/components/checkbox-field/checkbox-field.css.ts +++ b/src/renderer/src/components/checkbox-field/checkbox-field.css.ts @@ -19,7 +19,7 @@ export const checkbox = style({ alignItems: "center", position: "relative", transition: "all ease 0.2s", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, ":hover": { borderColor: "rgba(255, 255, 255, 0.5)", }, diff --git a/src/renderer/src/components/game-card/game-card.css.ts b/src/renderer/src/components/game-card/game-card.css.ts index f8d835fb..9f2f0654 100644 --- a/src/renderer/src/components/game-card/game-card.css.ts +++ b/src/renderer/src/components/game-card/game-card.css.ts @@ -10,7 +10,7 @@ export const card = recipe({ overflow: "hidden", borderRadius: "4px", transition: "all ease 0.2s", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, cursor: "pointer", zIndex: "1", ":active": { @@ -103,7 +103,7 @@ export const specifics = style({ export const specificsItem = style({ gap: `${SPACING_UNIT}px`, display: "flex", - color: "#c0c1c7", + color: vars.color.muted, fontSize: "12px", alignItems: "flex-end", }); @@ -112,7 +112,7 @@ export const titleContainer = style({ display: "flex", alignItems: "center", gap: `${SPACING_UNIT}px`, - color: "#c0c1c7", + color: vars.color.muted, }); export const shopIcon = style({ diff --git a/src/renderer/src/components/header/header.css.ts b/src/renderer/src/components/header/header.css.ts index eb95dc6e..705b533e 100644 --- a/src/renderer/src/components/header/header.css.ts +++ b/src/renderer/src/components/header/header.css.ts @@ -29,8 +29,8 @@ export const header = recipe({ WebkitAppRegion: "drag", width: "100%", padding: `${SPACING_UNIT * 2}px ${SPACING_UNIT * 3}px`, - color: "#c0c1c7", - borderBottom: `solid 1px ${vars.color.borderColor}`, + color: vars.color.muted, + borderBottom: `solid 1px ${vars.color.border}`, backgroundColor: vars.color.darkBackground, } as ComplexStyleRule, variants: { @@ -55,7 +55,7 @@ export const search = recipe({ width: "200px", alignItems: "center", borderRadius: "8px", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, height: "40px", WebkitAppRegion: "no-drag", } as ComplexStyleRule, @@ -83,7 +83,6 @@ export const searchInput = style({ color: "#DADBE1", cursor: "default", fontFamily: "inherit", - fontSize: vars.size.bodyFontSize, textOverflow: "ellipsis", ":focus": { cursor: "text", diff --git a/src/renderer/src/components/hero/hero.css.ts b/src/renderer/src/components/hero/hero.css.ts index 3c9ec81c..261a22ac 100644 --- a/src/renderer/src/components/hero/hero.css.ts +++ b/src/renderer/src/components/hero/hero.css.ts @@ -11,7 +11,7 @@ export const hero = style({ overflow: "hidden", boxShadow: "0px 0px 15px 0px #000000", cursor: "pointer", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, zIndex: "1", }); @@ -33,7 +33,7 @@ export const heroMedia = style({ export const backdrop = style({ width: "100%", height: "100%", - background: "linear-gradient(0deg, rgba(0, 0, 0, 0.6) 25%, transparent 100%)", + background: "linear-gradient(0deg, rgba(0, 0, 0, 0.8) 25%, transparent 100%)", position: "relative", display: "flex", overflow: "hidden", @@ -41,8 +41,7 @@ export const backdrop = style({ export const description = style({ maxWidth: "700px", - fontSize: vars.size.bodyFontSize, - color: "#c0c1c7", + color: vars.color.muted, textAlign: "left", fontFamily: "'Fira Sans', sans-serif", lineHeight: "20px", diff --git a/src/renderer/src/components/hero/hero.tsx b/src/renderer/src/components/hero/hero.tsx index 9eadbd74..c3d27a3d 100644 --- a/src/renderer/src/components/hero/hero.tsx +++ b/src/renderer/src/components/hero/hero.tsx @@ -6,7 +6,7 @@ import { ShopDetails } from "@types"; import { getSteamLanguage, steamUrlBuilder } from "@renderer/helpers"; import { useTranslation } from "react-i18next"; -const FEATURED_GAME_ID = "253230"; +const FEATURED_GAME_ID = "2420110"; export function Hero() { const [featuredGameDetails, setFeaturedGameDetails] = @@ -36,7 +36,7 @@ export function Hero() { >
diff --git a/src/renderer/src/components/modal/modal.css.ts b/src/renderer/src/components/modal/modal.css.ts index 37a3fef5..54f856b9 100644 --- a/src/renderer/src/components/modal/modal.css.ts +++ b/src/renderer/src/components/modal/modal.css.ts @@ -25,7 +25,7 @@ export const modal = recipe({ maxWidth: "600px", color: vars.color.bodyText, maxHeight: "100%", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, overflow: "hidden", display: "flex", flexDirection: "column", @@ -50,13 +50,18 @@ export const modalHeader = style({ display: "flex", gap: `${SPACING_UNIT}px`, padding: `${SPACING_UNIT * 2}px`, - borderBottom: `solid 1px ${vars.color.borderColor}`, + borderBottom: `solid 1px ${vars.color.border}`, justifyContent: "space-between", - alignItems: "flex-start", + alignItems: "center", }); export const closeModalButton = style({ cursor: "pointer", + transition: "all ease 0.2s", + alignSelf: "flex-start", + ":hover": { + opacity: "0.75", + }, }); export const closeModalButtonIcon = style({ diff --git a/src/renderer/src/components/modal/modal.tsx b/src/renderer/src/components/modal/modal.tsx index 7bfc0dcc..79308c1e 100644 --- a/src/renderer/src/components/modal/modal.tsx +++ b/src/renderer/src/components/modal/modal.tsx @@ -3,14 +3,14 @@ import { createPortal } from "react-dom"; import { XIcon } from "@primer/octicons-react"; import * as styles from "./modal.css"; -import { useAppDispatch } from "@renderer/hooks"; -import { toggleDragging } from "@renderer/features"; + import { Backdrop } from "../backdrop/backdrop"; +import { useTranslation } from "react-i18next"; export interface ModalProps { visible: boolean; title: string; - description: string; + description?: string; onClose: () => void; children: React.ReactNode; } @@ -23,9 +23,10 @@ export function Modal({ children, }: ModalProps) { const [isClosing, setIsClosing] = useState(false); - const dispatch = useAppDispatch(); const modalContentRef = useRef(null); + const { t } = useTranslation("modal"); + const handleCloseClick = useCallback(() => { setIsClosing(true); const zero = performance.now(); @@ -82,10 +83,6 @@ export function Modal({ return () => {}; }, [handleCloseClick, visible]); - useEffect(() => { - dispatch(toggleDragging(visible)); - }, [dispatch, visible]); - if (!visible) return null; return createPortal( @@ -98,13 +95,14 @@ export function Modal({

{title}

-

{description}

+ {description &&

{description}

}
diff --git a/src/renderer/src/components/sidebar/sidebar.css.ts b/src/renderer/src/components/sidebar/sidebar.css.ts index e4ff22f8..b8527645 100644 --- a/src/renderer/src/components/sidebar/sidebar.css.ts +++ b/src/renderer/src/components/sidebar/sidebar.css.ts @@ -5,11 +5,11 @@ import { SPACING_UNIT, vars } from "../../theme.css"; export const sidebar = recipe({ base: { backgroundColor: vars.color.darkBackground, - color: "#c0c1c7", + color: vars.color.muted, flexDirection: "column", display: "flex", transition: "opacity ease 0.2s", - borderRight: `solid 1px ${vars.color.borderColor}`, + borderRight: `solid 1px ${vars.color.border}`, position: "relative", }, variants: { @@ -65,7 +65,7 @@ export const menuItem = recipe({ textWrap: "nowrap", display: "flex", opacity: "0.9", - color: "#DADBE1", + color: vars.color.muted, ":hover": { opacity: "1", }, @@ -130,7 +130,7 @@ export const section = recipe({ variants: { hasBorder: { true: { - borderBottom: `solid 1px ${vars.color.borderColor}`, + borderBottom: `solid 1px ${vars.color.border}`, }, }, }, @@ -157,10 +157,10 @@ export const footerSocialsItem = style({ height: "16px", display: "flex", alignItems: "center", - transition: "all ease 0.15s", + transition: "all ease 0.2s", + cursor: "pointer", ":hover": { - opacity: 0.75, - cursor: "pointer", + opacity: "0.75", }, }); diff --git a/src/renderer/src/components/sidebar/sidebar.tsx b/src/renderer/src/components/sidebar/sidebar.tsx index 5cdb2572..9906affb 100644 --- a/src/renderer/src/components/sidebar/sidebar.tsx +++ b/src/renderer/src/components/sidebar/sidebar.tsx @@ -16,21 +16,6 @@ import XLogo from "@renderer/assets/x-icon.svg?react"; import * as styles from "./sidebar.css"; -const socials = [ - { - url: "https://discord.gg/hydralauncher", - icon: , - }, - { - url: "https://twitter.com/hydralauncher", - icon: , - }, - { - url: "https://github.com/hydralauncher/hydra", - icon: , - }, -]; - const SIDEBAR_MIN_WIDTH = 200; const SIDEBAR_INITIAL_WIDTH = 250; const SIDEBAR_MAX_WIDTH = 450; @@ -49,6 +34,24 @@ export function Sidebar() { initialSidebarWidth ? Number(initialSidebarWidth) : SIDEBAR_INITIAL_WIDTH ); + const socials = [ + { + url: "https://discord.gg/hydralauncher", + icon: , + label: t("discord"), + }, + { + url: "https://twitter.com/hydralauncher", + icon: , + label: t("x"), + }, + { + url: "https://github.com/hydralauncher/hydra", + icon: , + label: t("github"), + }, + ]; + const location = useLocation(); const { game: gameDownloading, progress } = useDownload(); @@ -243,6 +246,8 @@ export function Sidebar() { key={item.url} className={styles.footerSocialsItem} onClick={() => window.electron.openExternal(item.url)} + title={item.label} + aria-label={item.label} > {item.icon} diff --git a/src/renderer/src/components/text-field/text-field.css.ts b/src/renderer/src/components/text-field/text-field.css.ts index d38230ef..f5469fa1 100644 --- a/src/renderer/src/components/text-field/text-field.css.ts +++ b/src/renderer/src/components/text-field/text-field.css.ts @@ -9,7 +9,7 @@ export const textField = recipe({ width: "100%", alignItems: "center", borderRadius: "8px", - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, height: "40px", minHeight: "40px", }, @@ -44,7 +44,6 @@ export const textFieldInput = style({ color: "#DADBE1", cursor: "default", fontFamily: "inherit", - fontSize: vars.size.bodyFontSize, textOverflow: "ellipsis", padding: `${SPACING_UNIT}px`, ":focus": { diff --git a/src/renderer/src/components/text-field/text-field.tsx b/src/renderer/src/components/text-field/text-field.tsx index 3b86e290..b26b961d 100644 --- a/src/renderer/src/components/text-field/text-field.tsx +++ b/src/renderer/src/components/text-field/text-field.tsx @@ -9,11 +9,16 @@ export interface TextFieldProps > { theme?: NonNullable>["theme"]; label?: string; + textFieldProps?: React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLDivElement + >; } export function TextField({ theme = "primary", label, + textFieldProps, ...props }: TextFieldProps) { const [isFocused, setIsFocused] = useState(false); @@ -27,7 +32,10 @@ export function TextField({ )} -
+
) => { + toggleDraggingDisabled: (state, action: PayloadAction) => { state.draggingDisabled = action.payload; }, setHeaderTitle: (state, action: PayloadAction) => { @@ -24,4 +24,4 @@ export const windowSlice = createSlice({ }, }); -export const { toggleDragging, setHeaderTitle } = windowSlice.actions; +export const { toggleDraggingDisabled, setHeaderTitle } = windowSlice.actions; diff --git a/src/renderer/src/helpers.ts b/src/renderer/src/helpers.ts index ae100f62..89da2bca 100644 --- a/src/renderer/src/helpers.ts +++ b/src/renderer/src/helpers.ts @@ -21,5 +21,8 @@ export const getSteamLanguage = (language: string) => { if (language.startsWith("pt")) return "brazilian"; if (language.startsWith("es")) return "spanish"; if (language.startsWith("fr")) return "french"; + if (language.startsWith("ru")) return "russian"; + if (language.startsWith("it")) return "italian"; + if (language.startsWith("hu")) return "hungarian"; return "english"; }; diff --git a/src/renderer/src/pages/catalogue/catalogue.tsx b/src/renderer/src/pages/catalogue/catalogue.tsx index 8dc5fc56..a809e246 100644 --- a/src/renderer/src/pages/catalogue/catalogue.tsx +++ b/src/renderer/src/pages/catalogue/catalogue.tsx @@ -6,7 +6,7 @@ import type { CatalogueEntry } from "@types"; import { clearSearch } from "@renderer/features"; import { useAppDispatch } from "@renderer/hooks"; -import { vars } from "../../theme.css"; +import { SPACING_UNIT, vars } from "../../theme.css"; import { useEffect, useRef, useState } from "react"; import { useNavigate, useSearchParams } from "react-router-dom"; import * as styles from "../home/home.css"; @@ -67,12 +67,12 @@ export function Catalogue() {
- @@ -135,12 +148,17 @@ export function HeroPanelActions({ if (game?.status === "paused") { return ( <> - @@ -156,6 +174,7 @@ export function HeroPanelActions({ onClick={openGameInstaller} theme="outline" disabled={deleting || isGamePlaying} + className={styles.heroPanelAction} > {t("install")} @@ -164,7 +183,12 @@ export function HeroPanelActions({ )} {isGamePlaying ? ( - ) : ( @@ -172,6 +196,7 @@ export function HeroPanelActions({ onClick={openGame} theme="outline" disabled={deleting || isGamePlaying} + className={styles.heroPanelAction} > {t("play")} @@ -183,13 +208,19 @@ export function HeroPanelActions({ if (game?.status === "cancelled") { return ( <> - @@ -201,7 +232,11 @@ export function HeroPanelActions({ return ( <> {toggleGameOnLibraryButton} - diff --git a/src/renderer/src/pages/game-details/hero-panel.css.ts b/src/renderer/src/pages/game-details/hero/hero-panel.css.ts similarity index 81% rename from src/renderer/src/pages/game-details/hero-panel.css.ts rename to src/renderer/src/pages/game-details/hero/hero-panel.css.ts index 6824f9a4..08ffff8a 100644 --- a/src/renderer/src/pages/game-details/hero-panel.css.ts +++ b/src/renderer/src/pages/game-details/hero/hero-panel.css.ts @@ -1,5 +1,5 @@ import { style } from "@vanilla-extract/css"; -import { SPACING_UNIT, vars } from "../../theme.css"; +import { SPACING_UNIT, vars } from "../../../theme.css"; export const panel = style({ width: "100%", @@ -9,7 +9,8 @@ export const panel = style({ alignItems: "center", justifyContent: "space-between", transition: "all ease 0.2s", - borderBottom: `solid 1px ${vars.color.borderColor}`, + borderBottom: `solid 1px ${vars.color.border}`, + color: "#8e919b", boxShadow: "0px 0px 15px 0px #000000", }); @@ -17,7 +18,6 @@ export const content = style({ display: "flex", flexDirection: "column", gap: `${SPACING_UNIT}px`, - fontSize: vars.size.bodyFontSize, }); export const actions = style({ diff --git a/src/renderer/src/pages/game-details/hero-panel.tsx b/src/renderer/src/pages/game-details/hero/hero-panel.tsx similarity index 97% rename from src/renderer/src/pages/game-details/hero-panel.tsx rename to src/renderer/src/pages/game-details/hero/hero-panel.tsx index 09a04970..f45f8e57 100644 --- a/src/renderer/src/pages/game-details/hero-panel.tsx +++ b/src/renderer/src/pages/game-details/hero/hero-panel.tsx @@ -6,12 +6,13 @@ import { useDownload } from "@renderer/hooks"; import type { Game, ShopDetails } from "@types"; import { formatDownloadProgress } from "@renderer/helpers"; -import { BinaryNotFoundModal } from "../shared-modals/binary-not-found-modal"; -import * as styles from "./hero-panel.css"; import { useDate } from "@renderer/hooks/use-date"; import { formatBytes } from "@renderer/utils"; import { HeroPanelActions } from "./hero-panel-actions"; +import { BinaryNotFoundModal } from "../../shared-modals/binary-not-found-modal"; +import * as styles from "./hero-panel.css"; + export interface HeroPanelProps { game: Game | null; gameDetails: ShopDetails | null; @@ -67,6 +68,8 @@ export function HeroPanel({ clearInterval(interval); }; } + + return () => {}; }, [game?.lastTimePlayed, updateLastTimePlayed]); const finalDownloadSize = useMemo(() => { @@ -82,7 +85,7 @@ export function HeroPanel({ const getInfo = () => { if (!gameDetails) return null; - if (isGameDeleting(game?.id)) { + if (isGameDeleting(game?.id ?? -1)) { return

{t("deleting")}

; } diff --git a/src/renderer/src/pages/game-details/hero/index.ts b/src/renderer/src/pages/game-details/hero/index.ts new file mode 100644 index 00000000..b4cc12ed --- /dev/null +++ b/src/renderer/src/pages/game-details/hero/index.ts @@ -0,0 +1 @@ +export * from "./hero-panel"; diff --git a/src/renderer/src/pages/game-details/how-long-to-beat-section.tsx b/src/renderer/src/pages/game-details/how-long-to-beat-section.tsx index c46afbf6..dad0b928 100644 --- a/src/renderer/src/pages/game-details/how-long-to-beat-section.tsx +++ b/src/renderer/src/pages/game-details/how-long-to-beat-section.tsx @@ -1,6 +1,6 @@ import Skeleton, { SkeletonTheme } from "react-loading-skeleton"; -import type { HowLongToBeatCategory } from "@types"; import { useTranslation } from "react-i18next"; +import type { HowLongToBeatCategory } from "@types"; import { vars } from "../../theme.css"; import * as styles from "./game-details.css"; diff --git a/src/renderer/src/pages/game-details/installation-guides/constants.ts b/src/renderer/src/pages/game-details/installation-guides/constants.ts new file mode 100644 index 00000000..e20f7714 --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/constants.ts @@ -0,0 +1,3 @@ +export const DONT_SHOW_ONLINE_FIX_INSTRUCTIONS_KEY = + "dontShowOnlineFixInstructions"; +export const DONT_SHOW_DODI_INSTRUCTIONS_KEY = "dontShowDodiInstructions"; diff --git a/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.css.ts b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.css.ts new file mode 100644 index 00000000..d95add53 --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.css.ts @@ -0,0 +1,31 @@ +import { vars } from "../../../theme.css"; +import { keyframes, style } from "@vanilla-extract/css"; + +export const slideIn = keyframes({ + "0%": { transform: "translateY(0)" }, + "40%": { transform: "translateY(0)" }, + "70%": { transform: "translateY(-100%)" }, + "100%": { transform: "translateY(-100%)" }, +}); + +export const windowContainer = style({ + width: "250px", + height: "150px", + alignSelf: "center", + borderRadius: "2px", + overflow: "hidden", + border: `solid 1px ${vars.color.border}`, +}); + +export const windowContent = style({ + backgroundColor: vars.color.muted, + height: "90%", + animationName: slideIn, + animationDuration: "3s", + animationIterationCount: "infinite", + animationTimingFunction: "ease-out", + display: "flex", + alignItems: "center", + justifyContent: "center", + color: "#1c1c1c", +}); diff --git a/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx new file mode 100644 index 00000000..b838b90a --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx @@ -0,0 +1,74 @@ +import { useState } from "react"; +import { Trans, useTranslation } from "react-i18next"; + +import { Button, CheckboxField, Modal } from "@renderer/components"; +import { SPACING_UNIT } from "@renderer/theme.css"; + +import * as styles from "./dodi-installation-guide.css"; +import { ArrowUpIcon } from "@primer/octicons-react"; +import { DONT_SHOW_DODI_INSTRUCTIONS_KEY } from "./constants"; + +export interface DODIInstallationGuideProps { + windowColor: string; + visible: boolean; + onClose: () => void; +} + +export function DODIInstallationGuide({ + windowColor, + visible, + onClose, +}: DODIInstallationGuideProps) { + const { t } = useTranslation("game_details"); + + const [dontShowAgain, setDontShowAgain] = useState(true); + + const handleClose = () => { + if (dontShowAgain) { + window.localStorage.setItem(DONT_SHOW_DODI_INSTRUCTIONS_KEY, "1"); + onClose(); + } + }; + + return ( + +
+

+ + + +

+ +
+
+ +
+
+ + setDontShowAgain(!dontShowAgain)} + checked={dontShowAgain} + /> + + +
+
+ ); +} diff --git a/src/renderer/src/pages/game-details/installation-guides/index.ts b/src/renderer/src/pages/game-details/installation-guides/index.ts new file mode 100644 index 00000000..ff5b129e --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/index.ts @@ -0,0 +1,3 @@ +export * from "./online-fix-installation-guide"; +export * from "./dodi-installation-guide"; +export * from "./constants"; diff --git a/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.css.ts b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.css.ts new file mode 100644 index 00000000..891f11be --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.css.ts @@ -0,0 +1,7 @@ +import { SPACING_UNIT } from "../../../theme.css"; +import { style } from "@vanilla-extract/css"; + +export const passwordField = style({ + display: "flex", + gap: `${SPACING_UNIT}px`, +}); diff --git a/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx new file mode 100644 index 00000000..93ab65ad --- /dev/null +++ b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx @@ -0,0 +1,103 @@ +import { useState } from "react"; +import { useTranslation } from "react-i18next"; + +import { Button, CheckboxField, Modal, TextField } from "@renderer/components"; +import { SPACING_UNIT } from "@renderer/theme.css"; + +import * as styles from "./online-fix-installation-guide.css"; +import { CopyIcon } from "@primer/octicons-react"; +import { DONT_SHOW_ONLINE_FIX_INSTRUCTIONS_KEY } from "./constants"; + +const ONLINE_FIX_PASSWORD = "online-fix.me"; + +export interface OnlineFixInstallationGuideProps { + visible: boolean; + onClose: () => void; +} + +export function OnlineFixInstallationGuide({ + visible, + onClose, +}: OnlineFixInstallationGuideProps) { + const [clipboardLocked, setClipboardLocked] = useState(false); + const { t } = useTranslation("game_details"); + + const [dontShowAgain, setDontShowAgain] = useState(true); + + const handleCopyToClipboard = () => { + setClipboardLocked(true); + + navigator.clipboard.writeText(ONLINE_FIX_PASSWORD); + + const zero = performance.now(); + + requestAnimationFrame(function holdLock(time) { + if (time - zero <= 3000) { + requestAnimationFrame(holdLock); + } else { + setClipboardLocked(false); + } + }); + }; + + const handleClose = () => { + if (dontShowAgain) { + window.localStorage.setItem(DONT_SHOW_ONLINE_FIX_INSTRUCTIONS_KEY, "1"); + onClose(); + } + }; + + return ( + +
+

{t("online_fix_instruction")}

+
+ + + +
+ + setDontShowAgain(!dontShowAgain)} + checked={dontShowAgain} + /> + + +
+
+ ); +} diff --git a/src/renderer/src/pages/game-details/online-fix-installation-guide.tsx b/src/renderer/src/pages/game-details/online-fix-installation-guide.tsx deleted file mode 100644 index 768440f1..00000000 --- a/src/renderer/src/pages/game-details/online-fix-installation-guide.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Button, CheckboxField, Modal, TextField } from "@renderer/components"; -import { createPortal } from "react-dom"; - -export function OnlineFixInstallationGuide() { - return ( - -
-

- When asked for an extraction password for OnlineFix repacks, use the - following one: -

- - - - - - -
- ); -} diff --git a/src/renderer/src/pages/game-details/repacks-modal.tsx b/src/renderer/src/pages/game-details/repacks-modal.tsx index fe684a85..f6b7d7d4 100644 --- a/src/renderer/src/pages/game-details/repacks-modal.tsx +++ b/src/renderer/src/pages/game-details/repacks-modal.tsx @@ -14,22 +14,19 @@ import { SelectFolderModal } from "./select-folder-modal"; export interface RepacksModalProps { visible: boolean; gameDetails: ShopDetails; - showSelectFolderModal: boolean; - setShowSelectFolderModal: (value: boolean) => void; - startDownload: (repackId: number, downloadPath: string) => Promise; + startDownload: (repack: GameRepack, downloadPath: string) => Promise; onClose: () => void; } export function RepacksModal({ visible, gameDetails, - showSelectFolderModal, - setShowSelectFolderModal, startDownload, onClose, }: RepacksModalProps) { const [filteredRepacks, setFilteredRepacks] = useState([]); const [repack, setRepack] = useState(null); + const [showSelectFolderModal, setShowSelectFolderModal] = useState(false); const repackersFriendlyNames = useAppSelector( (state) => state.repackersFriendlyNames.value @@ -57,12 +54,7 @@ export function RepacksModal({ }; return ( - + <> setShowSelectFolderModal(false)} @@ -70,26 +62,34 @@ export function RepacksModal({ startDownload={startDownload} repack={repack} /> -
- -
-
- {filteredRepacks.map((repack) => ( - - ))} -
-
+ +
+ +
+ +
+ {filteredRepacks.map((repack) => ( + + ))} +
+
+ ); } diff --git a/src/renderer/src/pages/game-details/select-folder-modal.css.tsx b/src/renderer/src/pages/game-details/select-folder-modal.css.tsx index 42629ffe..d9d0d540 100644 --- a/src/renderer/src/pages/game-details/select-folder-modal.css.tsx +++ b/src/renderer/src/pages/game-details/select-folder-modal.css.tsx @@ -10,10 +10,18 @@ export const container = style({ export const downloadsPathField = style({ display: "flex", - gap: `${SPACING_UNIT * 2}px`, + gap: `${SPACING_UNIT}px`, }); export const hintText = style({ fontSize: "12px", color: vars.color.bodyText, }); + +export const settingsLink = style({ + textDecoration: "none", + color: "#C0C1C7", + ":hover": { + textDecoration: "underline", + }, +}); diff --git a/src/renderer/src/pages/game-details/select-folder-modal.tsx b/src/renderer/src/pages/game-details/select-folder-modal.tsx index af6e4691..266b48c5 100644 --- a/src/renderer/src/pages/game-details/select-folder-modal.tsx +++ b/src/renderer/src/pages/game-details/select-folder-modal.tsx @@ -7,12 +7,13 @@ import { formatBytes } from "@renderer/utils"; import { DiskSpace } from "check-disk-space"; import { Link } from "react-router-dom"; import * as styles from "./select-folder-modal.css"; +import { DownloadIcon } from "@primer/octicons-react"; export interface SelectFolderModalProps { visible: boolean; gameDetails: ShopDetails; onClose: () => void; - startDownload: (repackId: number, downloadPath: string) => Promise; + startDownload: (repack: GameRepack, downloadPath: string) => Promise; repack: GameRepack | null; } @@ -63,8 +64,10 @@ export function SelectFolderModal({ const handleStartClick = () => { if (repack) { setDownloadStarting(true); - startDownload(repack.id, selectedPath).finally(() => { + + startDownload(repack, selectedPath).finally(() => { setDownloadStarting(false); + onClose(); }); } }; @@ -98,17 +101,12 @@ export function SelectFolderModal({

{t("select_folder_hint")}{" "} - + {t("settings")}

diff --git a/src/renderer/src/pages/settings/settings.css.ts b/src/renderer/src/pages/settings/settings.css.ts index 506b9574..7b1dd60d 100644 --- a/src/renderer/src/pages/settings/settings.css.ts +++ b/src/renderer/src/pages/settings/settings.css.ts @@ -12,7 +12,7 @@ export const content = style({ width: "100%", height: "100%", padding: `${SPACING_UNIT * 3}px`, - border: `solid 1px ${vars.color.borderColor}`, + border: `solid 1px ${vars.color.border}`, boxShadow: "0px 0px 15px 0px #000000", borderRadius: "8px", gap: `${SPACING_UNIT * 2}px`, @@ -22,5 +22,5 @@ export const content = style({ export const downloadsPathField = style({ display: "flex", - gap: `${SPACING_UNIT * 2}px`, + gap: `${SPACING_UNIT}px`, }); diff --git a/src/renderer/src/theme.css.ts b/src/renderer/src/theme.css.ts index b11f1acb..dfadc89d 100644 --- a/src/renderer/src/theme.css.ts +++ b/src/renderer/src/theme.css.ts @@ -6,8 +6,9 @@ export const [themeClass, vars] = createTheme({ color: { background: "#1c1c1c", darkBackground: "#151515", + muted: "#c0c1c7", bodyText: "#8e919b", - borderColor: "rgba(255, 255, 255, 0.1)", + border: "#424244", }, opacity: { disabled: "0.5", From ffa55d983d3590f9b76828f878cd95c4720b1814 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 21:25:21 +0000 Subject: [PATCH 06/12] docs(contributor): contrib-readme-action has updated readme --- README.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 967e4501..d35d6da2 100644 --- a/README.md +++ b/README.md @@ -112,21 +112,35 @@ yarn make Null - - - fhilipecrash -
- Fhilipe Coelho -
- Magrid0
Magrid
+ + + + fhilipecrash +
+ Fhilipe Coelho +
+ + + jps14 +
+ José Luís +
+ + + + shadowtosser +
+ Null +
+ ferivoq @@ -154,7 +168,8 @@ yarn make
Ikko Eltociear Ashimine
- + + Netflixyapp From 7f03841f8a61c136e61074b879d453ac4feba229 Mon Sep 17 00:00:00 2001 From: Hydra Date: Thu, 2 May 2024 22:51:05 +0100 Subject: [PATCH 07/12] chore: removing oneClick installer --- electron-builder.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/electron-builder.yml b/electron-builder.yml index 9acb2eac..06f6a5c5 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -23,6 +23,7 @@ nsis: shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always + oneClick: false mac: entitlementsInherit: build/entitlements.mac.plist extendInfo: From c2d3f157120e96e9d18d800ad51184a7134da6f7 Mon Sep 17 00:00:00 2001 From: Magrid Date: Thu, 2 May 2024 23:57:54 +0200 Subject: [PATCH 08/12] Update italian translation --- src/locales/it/translation.json | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json index 01b34c1e..0cc95e2a 100644 --- a/src/locales/it/translation.json +++ b/src/locales/it/translation.json @@ -17,7 +17,10 @@ "downloading": "{{title}} ({{percentage}} - Download…)", "filter": "Filtra libreria", "follow_us": "Seguici", - "home": "Home" + "home": "Home", + "discord": "Unisciti al nostro Discord", + "x": "Segui su X", + "github": "Contribuisci su GitHub" }, "header": { "search": "Cerca", @@ -77,7 +80,21 @@ "play": "Gioca", "deleting": "Eliminazione dell'installer…", "close": "Chiudi", - "playing_now": "Stai giocando adesso" + "playing_now": "Stai giocando adesso", + "change": "Aggiorna", + "repacks_modal_description": "Scegli il repack che vuoi scaricare", + "downloads_path": "Percorso dei download", + "select_folder_hint": "Per cambiare la cartella predefinita, accedi alle", + "settings": "Impostazioni", + "download_now": "Scarica ora", + "installation_instructions": "Istruzioni di installazione", + "installation_instructions_description": "Sono necessari passaggi aggiuntivi per installare questo gioco", + "online_fix_instruction": "I giochi OnlineFix richiedono una password per essere estratti. Quando richiesto, utilizza la seguente password:", + "dodi_installation_instruction": "Quando apri l'installatore di DODI, premi il tasto su della tua tastiera <0 /> per avviare il processo di installazione:", + "dont_show_it_again": "Non mostrarlo più", + "copy_to_clipboard": "Copia", + "copied_to_clipboard": "Copiato", + "got_it": "Capito" }, "activation": { "title": "Attiva Hydra", @@ -136,6 +153,9 @@ "binary_not_found_modal": { "title": "Programmi non installati", "description": "Gli eseguibili di Wine o Lutris non sono stati trovati sul tuo sistema", - "instructions": "Verifica il modo corretto di installare uno di essi sulla tua distribuzione Linux in modo che il gioco possa funzionare normalmente" + "instructions": "Verifica il modo corretto di installare uno di essi sulla tua distribuzione Linux in modo che il gioco possa funzionare normalmente" + }, + "modal": { + "close": "Pulsante Chiudi" } } From 59ffab4731c56d0f73db7ea4b221a335f151abfd Mon Sep 17 00:00:00 2001 From: Hydra Date: Thu, 2 May 2024 23:14:44 +0100 Subject: [PATCH 09/12] feat: adding installerSidebar image --- build/installerSidebar.bmp | Bin 0 -> 206122 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 build/installerSidebar.bmp diff --git a/build/installerSidebar.bmp b/build/installerSidebar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..58afac67cce6ebf08da182687dd3035d10b05d07 GIT binary patch literal 206122 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 z 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 N1_A~G2F{*={|6nE)kpvU literal 0 HcmV?d00001 From 83e0a5f4dae69d09538825330497e481a6b3d78f Mon Sep 17 00:00:00 2001 From: Hydra Date: Thu, 2 May 2024 23:16:10 +0100 Subject: [PATCH 10/12] fix: fixing typo on portuguese translation --- src/locales/pt/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json index df27fa34..3d967736 100644 --- a/src/locales/pt/translation.json +++ b/src/locales/pt/translation.json @@ -84,7 +84,7 @@ "settings": "Configurações do Hydra", "download_now": "Baixe agora", "installation_instructions": "Instruções de Instalação", - "installation_instructions_description": "Passos adicionais são necessários para instalar esse jogos", + "installation_instructions_description": "Passos adicionais são necessários para instalar esse jogo", "online_fix_instruction": "Jogos OnlineFix precisam de uma senha para serem extraídos. Quando solicitado, utilize a seguinte senha:", "dodi_installation_instruction": "Quando o instalador do DODI for aberto, pressione a seta para cima <0 /> do teclado para iniciar o processo de instalação:", "dont_show_it_again": "Não mostrar novamente", From 5ae7815e03d753483756de5ec36fdb5fab5d5ecb Mon Sep 17 00:00:00 2001 From: Hydra Date: Thu, 2 May 2024 23:42:07 +0100 Subject: [PATCH 11/12] fix: fixing typo on portuguese translation --- build/installerSidebar.bmp | Bin 206122 -> 154542 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/build/installerSidebar.bmp b/build/installerSidebar.bmp index 58afac67cce6ebf08da182687dd3035d10b05d07..b5156d6dfa6a8fa466c0f00ff0671122f17a484b 100644 GIT binary patch literal 154542 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 BS)Kp@ literal 206122 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 z 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 N1_A~G2F{*={|6nE)kpvU From 590ead96432e53edaf3e9c045affec134cf2b972 Mon Sep 17 00:00:00 2001 From: Hydra Date: Fri, 3 May 2024 10:13:07 +0100 Subject: [PATCH 12/12] fix: using random user agent for how long to beat --- package.json | 1 + src/main/services/how-long-to-beat.ts | 33 +- src/main/services/repack-tracker/helpers.ts | 12 +- .../dodi-installation-guide.tsx | 3 +- .../online-fix-installation-guide.tsx | 3 +- yarn.lock | 816 ++++++++++-------- 6 files changed, 509 insertions(+), 359 deletions(-) diff --git a/package.json b/package.json index 0d3a1e65..c2f9f44b 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "react-router-dom": "^6.22.3", "tough-cookie": "^4.1.3", "typeorm": "^0.3.20", + "user-agents": "^1.1.193", "windows-1251": "^3.0.4", "winston": "^3.13.0", "yaml": "^2.4.1" diff --git a/src/main/services/how-long-to-beat.ts b/src/main/services/how-long-to-beat.ts index 76d53c6d..ba5c98c1 100644 --- a/src/main/services/how-long-to-beat.ts +++ b/src/main/services/how-long-to-beat.ts @@ -34,6 +34,21 @@ export const searchHowLongToBeat = async (gameName: string) => { return response.data as HowLongToBeatSearchResponse; }; +const parseListItems = ($lis: Element[]) => { + return $lis.map(($li) => { + const title = $li.querySelector("h4")?.textContent; + const [, accuracyClassName] = Array.from(($li as HTMLElement).classList); + + const accuracy = accuracyClassName.split("time_").at(1); + + return { + title: title ?? "", + duration: $li.querySelector("h5")?.textContent ?? "", + accuracy: accuracy ?? "", + }; + }); +}; + export const getHowLongToBeatGame = async ( id: string ): Promise => { @@ -43,18 +58,16 @@ export const getHowLongToBeatGame = async ( const { document } = window; const $ul = document.querySelector(".shadow_shadow ul"); + if (!$ul) return []; + const $lis = Array.from($ul.children); - return $lis.map(($li) => { - const title = $li.querySelector("h4").textContent; - const [, accuracyClassName] = Array.from(($li as HTMLElement).classList); + const [$firstLi] = $lis; - const accuracy = accuracyClassName.split("time_").at(1); + if ($firstLi.tagName === "DIV") { + const $pcData = $lis.find(($li) => $li.textContent?.includes("PC")); + return parseListItems(Array.from($pcData?.querySelectorAll("li") ?? [])); + } - return { - title, - duration: $li.querySelector("h5").textContent, - accuracy, - }; - }); + return parseListItems($lis); }; diff --git a/src/main/services/repack-tracker/helpers.ts b/src/main/services/repack-tracker/helpers.ts index fd2dd7c5..1d4e8653 100644 --- a/src/main/services/repack-tracker/helpers.ts +++ b/src/main/services/repack-tracker/helpers.ts @@ -1,3 +1,5 @@ +import UserAgent from "user-agents"; + import type { Repack } from "@main/entity"; import { repackRepository } from "@main/repository"; @@ -8,7 +10,13 @@ export const savePage = async (repacks: QueryDeepPartialEntity[]) => repacks.map((repack) => repackRepository.insert(repack).catch(() => {})) ); -export const requestWebPage = async (url: string) => - fetch(url, { +export const requestWebPage = async (url: string) => { + const userAgent = new UserAgent(); + + return fetch(url, { method: "GET", + headers: { + "User-Agent": userAgent.toString(), + }, }).then((response) => response.text()); +}; diff --git a/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx index b838b90a..80370a96 100644 --- a/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx +++ b/src/renderer/src/pages/game-details/installation-guides/dodi-installation-guide.tsx @@ -26,8 +26,9 @@ export function DODIInstallationGuide({ const handleClose = () => { if (dontShowAgain) { window.localStorage.setItem(DONT_SHOW_DODI_INSTRUCTIONS_KEY, "1"); - onClose(); } + + onClose(); }; return ( diff --git a/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx index 93ab65ad..ffa07c45 100644 --- a/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx +++ b/src/renderer/src/pages/game-details/installation-guides/online-fix-installation-guide.tsx @@ -43,8 +43,9 @@ export function OnlineFixInstallationGuide({ const handleClose = () => { if (dontShowAgain) { window.localStorage.setItem(DONT_SHOW_ONLINE_FIX_INSTRUCTIONS_KEY, "1"); - onClose(); } + + onClose(); }; return ( diff --git a/yarn.lock b/yarn.lock index b7996429..21b93f84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"7zip-bin@~5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz" + integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A== + "@ampproject/remapping@^2.2.0": version "2.3.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" @@ -23,7 +28,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.18.5", "@babel/core@^7.21.3", "@babel/core@^7.23.5", "@babel/core@^7.23.9": +"@babel/core@^7.18.5", "@babel/core@^7.21.3", "@babel/core@^7.23.5", "@babel/core@^7.23.9": version "7.24.4" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz" integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== @@ -230,7 +235,7 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@colors/colors@^1.6.0", "@colors/colors@1.6.0": +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz" integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== @@ -346,6 +351,56 @@ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + "@esbuild/darwin-x64@0.19.12": version "0.19.12" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz" @@ -356,6 +411,176 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz" integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -486,7 +711,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -538,11 +763,86 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.0.tgz#bc8d14ba7673d901a0d5b4b5061dd4f843ab1797" + integrity sha512-nNvLvC2fjC+3+bHYN9uaGF3gcyy7RHGZhtl8TB/kINj9hiOQza8kWJGZh47GRPMrqeseO8U+Z8ElDMCZlWBdHA== + +"@rollup/rollup-android-arm64@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.0.tgz#be0cac9af51c9c9b4b064f335fb9886b95b1df8a" + integrity sha512-+kjt6dvxnyTIAo7oHeYseYhDyZ7xRKTNl/FoQI96PHkJVxoChldJnne/LzYqpqidoK1/0kX0/q+5rrYqjpth6w== + +"@rollup/rollup-darwin-arm64@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.0.tgz#6e829f61560dbae75f0ba94bf345d9608150703e" + integrity sha512-Oj6Tp0unMpGTBjvNwbSRv3DopMNLu+mjBzhKTt2zLbDJ/45fB1pltr/rqrO4bE95LzuYwhYn127pop+x/pzf5w== + "@rollup/rollup-darwin-x64@4.17.0": version "4.17.0" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.0.tgz" integrity sha512-3nJx0T+yptxMd+v93rBRxSPTAVCv8szu/fGZDJiKX7kvRe9sENj2ggXjCH/KK1xZEmJOhaNo0c9sGMgGdfkvEw== +"@rollup/rollup-linux-arm-gnueabihf@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.0.tgz#186c3aa4a9f6db70a4d1b8b6f75b98f1dc1d004d" + integrity sha512-Vb2e8p9b2lxxgqyOlBHmp6hJMu/HSU6g//6Tbr7x5V1DlPCHWLOm37nSIVK314f+IHzORyAQSqL7+9tELxX3zQ== + +"@rollup/rollup-linux-arm-musleabihf@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.0.tgz#9824aaa641d9fc12c66866a2c5d03847d43fea3a" + integrity sha512-Md60KsmC5ZIaRq/bYYDloklgU+XLEZwS2EXXVcSpiUw+13/ZASvSWQ/P92rQ9YDCL6EIoXxuQ829JkReqdYbGg== + +"@rollup/rollup-linux-arm64-gnu@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.0.tgz#a6c51266ec41df8431ccb3a5d9c09339264d86b8" + integrity sha512-zL5rBFtJ+2EGnMRm2TqKjdjgFqlotSU+ZJEN37nV+fiD3I6Gy0dUh3jBWN0wSlcXVDEJYW7YBe+/2j0N9unb2w== + +"@rollup/rollup-linux-arm64-musl@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.0.tgz#c862f69b1b979bae65545c55f005ca227b695778" + integrity sha512-s2xAyNkJqUdtRVgNK4NK4P9QttS538JuX/kfVQOdZDI5FIKVAUVdLW7qhGfmaySJ1EvN/Bnj9oPm5go9u8navg== + +"@rollup/rollup-linux-powerpc64le-gnu@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.0.tgz#ce19c505ef6ce2c83df74b42824d95d38069cc2b" + integrity sha512-7F99yzVT67B7IUNMjLD9QCFDCyHkyCJMS1dywZrGgVFJao4VJ9szrIEgH67cR+bXQgEaY01ur/WSL6B0jtcLyA== + +"@rollup/rollup-linux-riscv64-gnu@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.0.tgz#0f9719bec216cf2769ac9f420211190b2f55c8fa" + integrity sha512-leFtyiXisfa3Sg9pgZJwRKITWnrQfhtqDjCamnZhkZuIsk1FXmYwKoTkp6lsCgimIcneFFkHKp/yGLxDesga4g== + +"@rollup/rollup-linux-s390x-gnu@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.0.tgz#89cd27358ceb2351ae92b263df2ed0523f90b926" + integrity sha512-FtOgui6qMJ4jbSXTxElsy/60LEe/3U0rXkkz2G5CJ9rbHPAvjMvI+3qF0A0fwLQ5hW+/ZC6PbnS2KfRW9JkgDQ== + +"@rollup/rollup-linux-x64-gnu@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.0.tgz#854122ced306100a0f1bfe9085dce98360554efa" + integrity sha512-v6eiam/1w3HUfU/ZjzIDodencqgrSqzlNuNtiwH7PFJHYSo1ezL0/UIzmS2lpSJF1ORNaplXeKHYmmdt81vV2g== + +"@rollup/rollup-linux-x64-musl@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.0.tgz#6a96d08c563cb9b90ce806ebcb218518872ec408" + integrity sha512-OUhkSdpM5ofVlVU2k4CwVubYwiwu1a4jYWPpubzN7Vzao73GoPBowHcCfaRSFRz1SszJ3HIsk3dZYk4kzbqjgw== + +"@rollup/rollup-win32-arm64-msvc@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.0.tgz#a0403ef24fe50d28b7c18dcf97d88d882950bbd8" + integrity sha512-uL7UYO/MNJPGL/yflybI+HI+n6+4vlfZmQZOCb4I+z/zy1wisHT3exh7oNQsnL6Eso0EUTEfgQ/PaGzzXf6XyQ== + +"@rollup/rollup-win32-ia32-msvc@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.0.tgz#b9a2dd65241a78a434592b917430702b3c360fc1" + integrity sha512-4WnSgaUiUmXILwFqREdOcqvSj6GD/7FrvSjhaDjmwakX9w4Z2F8JwiSP1AZZbuRkPqzi444UI5FPv33VKOWYFQ== + +"@rollup/rollup-win32-x64-msvc@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.0.tgz#3b8ec9d6a7eccca80dd1f16fe444abe128a2ec08" + integrity sha512-ve+D8t1prRSRnF2S3pyDtTXDlvW1Pngbz76tjgYFQW1jxVSysmQCZfPoDAo4WP+Ano8zeYp85LsArZBI12HfwQ== + "@sentry-internal/feedback@7.112.0": version "7.112.0" resolved "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.0.tgz" @@ -651,6 +951,36 @@ resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.31.0.tgz" integrity sha512-VM5liyxMnm4K2g0WsrRPXRCMLhaT09C7gK5Fz/CxKYh9sbMZB7KA4hV/3klkyuyw1+ECF1J66cefhNkFZepUig== +"@sentry/cli-linux-arm64@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.31.0.tgz#38604d2d1e7c2e50d48610d38523e371d2104cd7" + integrity sha512-eENJTmXoFX3uNr8xRW7Bua2Sw3V1tylQfdtS85pNjZPdbm3U8wYQSWu2VoZkK2ASOoC+17YC8jTQxq62KWnSeQ== + +"@sentry/cli-linux-arm@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.31.0.tgz#6e802a279011703d39e4b31de7b950c522a73261" + integrity sha512-AZoCN3waXEfXGCd3YSrikcX/y63oQe0Tiyapkeoifq/0QhI+2MOOrAQb60gthsXwb0UDK/XeFi3PaxyUCphzxA== + +"@sentry/cli-linux-i686@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.31.0.tgz#d4586a18145f43b37324231e0f19f8f23793fc58" + integrity sha512-cQUFb3brhLaNSIoNzjU/YASnTM1I3TDJP9XXzH0eLK9sSopCcDcc6OrYEYvdjJXZKzFv5sbc9UNMsIDbh4+rYg== + +"@sentry/cli-linux-x64@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.31.0.tgz#f89fd87b47a5eb10c292846f3a1a754cf97105fe" + integrity sha512-z1zTNg91nZJRdcGHC/bCU1KwIaifV0MLJteip9KrFDprzhJk1HtMxFOS0+OZ5/UH21CjAFmg9Pj6IAGqm3BYjA== + +"@sentry/cli-win32-i686@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.31.0.tgz#cb3dbb539c8f8bcac4b1f95ab45a87b5143997ee" + integrity sha512-+K7fdk57aUd4CmYrQfDGYPzVyxsTnVro6IPb5QSSLpP03dL7ko5208epu4m2SyN/MkFvscy9Di3n3DTvIfDU2w== + +"@sentry/cli-win32-x64@2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.31.0.tgz#8ac3fa4ae0634911af4f4a497d58d2adce0f303a" + integrity sha512-w5cvpZ6VVlhlyleY8TYHmrP7g48vKHnoVt5xFccfxT+HqQI/AxodvzgVvBTM2kB/sh/kHwexp6bJGWCdkGftww== + "@sentry/cli@^2.22.3": version "2.31.0" resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.31.0.tgz" @@ -798,12 +1128,7 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== -"@sindresorhus/is@^5.2.0": - version "5.6.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz" - integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== - -"@sindresorhus/is@^5.3.0": +"@sindresorhus/is@^5.2.0", "@sindresorhus/is@^5.3.0": version "5.6.0" resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== @@ -867,7 +1192,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@*", "@svgr/core@^8.1.0": +"@svgr/core@^8.1.0": version "8.1.0" resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== @@ -896,12 +1221,57 @@ "@svgr/hast-util-to-babel-ast" "8.0.0" svg-parser "^2.0.4" +"@swc/core-darwin-arm64@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.17.tgz#e62fa7f247bdd1c0c50a3f99722da4dd098c7c67" + integrity sha512-HVl+W4LezoqHBAYg2JCqR+s9ife9yPfgWSj37iIawLWzOmuuJ7jVdIB7Ee2B75bEisSEKyxRlTl6Y1Oq3owBgw== + "@swc/core-darwin-x64@1.4.17": version "1.4.17" resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.17.tgz" integrity sha512-WYRO9Fdzq4S/he8zjW5I95G1zcvyd9yyD3Tgi4/ic84P5XDlSMpBDpBLbr/dCPjmSg7aUXxNQqKqGkl6dQxYlA== -"@swc/core@^1.0.0", "@swc/core@^1.4.16": +"@swc/core-linux-arm-gnueabihf@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.17.tgz#7145b3ada5cf9b748eaacbc9a7c7037ba0fb26bb" + integrity sha512-cgbvpWOvtMH0XFjvwppUCR+Y+nf6QPaGu6AQ5hqCP+5Lv2zO5PG0RfasC4zBIjF53xgwEaaWmGP5/361P30X8Q== + +"@swc/core-linux-arm64-gnu@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.17.tgz#5c0833ef132af17bd3cbdf2253f35b57c0cf62bb" + integrity sha512-l7zHgaIY24cF9dyQ/FOWbmZDsEj2a9gRFbmgx2u19e3FzOPuOnaopFj0fRYXXKCmtdx+anD750iBIYnTR+pq/Q== + +"@swc/core-linux-arm64-musl@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.17.tgz#5bfe81eb23c905f04b669a7d2b060a147a263483" + integrity sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw== + +"@swc/core-linux-x64-gnu@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.17.tgz#a0c19bc9635e86ebd1c7f8e9e026503d1a1bf83d" + integrity sha512-vRDFATL1oN5oZMImkwbgSHEkp8xG1ofEASBypze01W1Tqto8t+yo6gsp69wzCZBlxldsvPpvFZW55Jq0Rn+UnA== + +"@swc/core-linux-x64-musl@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.17.tgz#2179b9536235a3b02a46997ddb1c178dfadf1667" + integrity sha512-zQNPXAXn3nmPqv54JVEN8k2JMEcMTQ6veVuU0p5O+A7KscJq+AGle/7ZQXzpXSfUCXlLMX4wvd+rwfGhh3J4cw== + +"@swc/core-win32-arm64-msvc@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.17.tgz#3004a431c836c6b16b4660ea2425dde467a8ee36" + integrity sha512-z86n7EhOwyzxwm+DLE5NoLkxCTme2lq7QZlDjbQyfCxOt6isWz8rkW5QowTX8w9Rdmk34ncrjSLvnHOeLY17+w== + +"@swc/core-win32-ia32-msvc@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.17.tgz#59155485d5307fb2a267e5acb215e0f440b6f48f" + integrity sha512-JBwuSTJIgiJJX6wtr4wmXbfvOswHFj223AumUrK544QV69k60FJ9q2adPW9Csk+a8wm1hLxq4HKa2K334UHJ/g== + +"@swc/core-win32-x64-msvc@1.4.17": + version "1.4.17" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.17.tgz#b98f25fc277fb0e319f25f9fd00a82023662716b" + integrity sha512-jFkOnGQamtVDBm3MF5Kq1lgW8vx4Rm1UvJWRUfg+0gx7Uc3Jp3QMFeMNw/rDNQYRDYPG3yunCC+2463ycd5+dg== + +"@swc/core@^1.4.16": version "1.4.17" resolved "https://registry.npmjs.org/@swc/core/-/core-1.4.17.tgz" integrity sha512-tq+mdWvodMBNBBZbwFIMTVGYHe9N7zvEaycVVjfvAx20k1XozHbHhRv+9pEVFJjwRxLdXmtvFZd3QZHRAOpoNQ== @@ -1008,12 +1378,12 @@ dependencies: "@types/ms" "*" -"@types/estree@^1.0.0", "@types/estree@1.0.5": +"@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/fs-extra@^9.0.11", "@types/fs-extra@9.0.13": +"@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -1070,7 +1440,7 @@ resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== -"@types/node@*", "@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.12.7": +"@types/node@*", "@types/node@^20.12.7": version "20.12.7" resolved "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz" integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== @@ -1120,7 +1490,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.2.25", "@types/react@^18.2.48": +"@types/react@*", "@types/react@^18.2.48": version "18.3.1" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz" integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== @@ -1184,7 +1554,7 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.14.0": +"@typescript-eslint/parser@^6.14.0": version "6.21.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== @@ -1265,7 +1635,7 @@ dependencies: "@babel/core" "^7.23.9" -"@vanilla-extract/css@^1.0.0", "@vanilla-extract/css@^1.14.2": +"@vanilla-extract/css@^1.14.2": version "1.14.2" resolved "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.14.2.tgz" integrity sha512-OasEW4ojGqqRiUpsyEDUMrSkLnmwbChtafkogpCZ1eDAgAZ9eY9CHLYodj2nB8aV5T25kQ5shm92k25ngjYhhg== @@ -1334,11 +1704,6 @@ resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== -"7zip-bin@~5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz" - integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A== - abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" @@ -1351,7 +1716,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.3, acorn@^8.8.1, acorn@^8.9.0: +acorn@^8.11.3, acorn@^8.8.1, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -1361,20 +1726,6 @@ adm-zip@^0.5.9: resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz" integrity sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ== -agent-base@^7.0.2: - version "7.1.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -agent-base@^7.1.0: - version "7.1.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -1382,12 +1733,19 @@ agent-base@6: dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.1" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + ajv-keywords@^3.4.1: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1482,51 +1840,6 @@ app-root-path@^3.1.0: resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz" integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver-utils@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz" - integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw== - dependencies: - glob "^7.2.3" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -archiver@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz" - integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.4" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.1.2" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" @@ -1639,7 +1952,7 @@ async-exit-hook@^2.0.1: resolved "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== -async@^3.2.3, async@^3.2.4: +async@^3.2.3: version "3.2.5" resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== @@ -1697,7 +2010,7 @@ bep53-range@^2.0.0: resolved "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz" integrity sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA== -"better-sqlite3@^7.1.2 || ^8.0.0 || ^9.0.0", better-sqlite3@^9.5.0: +better-sqlite3@^9.5.0: version "9.6.0" resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.6.0.tgz" integrity sha512-yR5HATnqeYNVnkaUTf4bOP2dJSnyhP4puJN/QPRyx4YkBEEUxib422n2XzPqDEHjQQqazoYoADdAm5vE15+dAQ== @@ -1765,7 +2078,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.1, browserslist@^4.22.2, "browserslist@>= 4.21.0": +browserslist@^4.21.1, browserslist@^4.22.2: version "4.23.0" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -1775,7 +2088,7 @@ browserslist@^4.21.1, browserslist@^4.22.2, "browserslist@>= 4.21.0": node-releases "^2.0.14" update-browserslist-db "^1.0.13" -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: +buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== @@ -1819,8 +2132,8 @@ builder-util@24.13.1: resolved "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz" integrity sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA== dependencies: - "@types/debug" "^4.1.6" "7zip-bin" "~5.2.0" + "@types/debug" "^4.1.6" app-builder-bin "4.0.0" bluebird-lst "^1.0.9" builder-util-runtime "9.2.4" @@ -2029,16 +2342,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.6.0: version "1.9.1" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" @@ -2085,16 +2398,6 @@ compare-version@^0.1.2: resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== -compress-commons@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz" - integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -2118,7 +2421,7 @@ convert-source-map@^2.0.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-util-is@~1.0.0, core-util-is@1.0.2: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== @@ -2133,11 +2436,6 @@ cosmiconfig@^8.1.3: parse-json "^5.2.0" path-type "^4.0.0" -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - crc@^3.8.0: version "3.8.0" resolved "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" @@ -2145,14 +2443,6 @@ crc@^3.8.0: dependencies: buffer "^5.1.0" -crc32-stream@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz" - integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - cross-fetch-ponyfill@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz" @@ -2242,7 +2532,7 @@ dayjs@^1.11.9: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2276,16 +2566,16 @@ deep-object-diff@^1.1.9: resolved "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz" integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== -deepmerge@^4.2.2: - 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== - deepmerge@4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== +deepmerge@^4.2.2: + 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== + defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" @@ -2430,16 +2720,6 @@ ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-builder-squirrel-windows@24.13.3: - version "24.13.3" - resolved "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz" - integrity sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg== - dependencies: - app-builder-lib "24.13.3" - archiver "^5.3.1" - builder-util "24.13.1" - fs-extra "^10.1.0" - electron-builder@^24.9.1: version "24.13.3" resolved "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz" @@ -2487,7 +2767,7 @@ electron-vite@^2.0.0: magic-string "^0.30.5" picocolors "^1.0.0" -electron@^28.2.0, electron@>=13.0.0: +electron@^28.2.0: version "28.3.1" resolved "https://registry.npmjs.org/electron/-/electron-28.3.1.tgz" integrity sha512-aF9fONuhVDJlctJS7YOw76ynxVAQdfIWmlhRMKits24tDcdSL0eMHUS0wWYiRfGWbQnUKB6V49Rf17o32f4/fg== @@ -2734,7 +3014,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@*, eslint-config-prettier@^9.1.0: +eslint-config-prettier@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== @@ -2789,7 +3069,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.56.0, "eslint@>= 8.0.0", eslint@>=7.0.0, eslint@>=8.0.0: +eslint@^8.56.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -3085,17 +3365,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -3227,43 +3497,7 @@ glob@^10.3.10: minipass "^7.0.4" path-scurry "^1.10.2" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.4: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.6: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.3: +glob@^7.1.3, glob@^7.1.6: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -3542,7 +3776,7 @@ i18next-browser-languagedetector@^7.2.1: dependencies: "@babel/runtime" "^7.23.2" -i18next@^23.11.2, "i18next@>= 23.2.3": +i18next@^23.11.2: version "23.11.2" resolved "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz" integrity sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA== @@ -3557,7 +3791,7 @@ iconv-corefoundation@^1.1.7: cli-truncate "^2.1.0" node-addon-api "^1.6.3" -iconv-lite@^0.6.2, iconv-lite@0.6.3: +iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -3605,7 +3839,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3843,11 +4077,6 @@ isarray@^2.0.5: resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isbinaryfile@^4.0.8: version "4.0.10" resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" @@ -4015,13 +4244,6 @@ lazy-val@^1.0.4, lazy-val@^1.0.5: resolved "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" - levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -4061,41 +4283,21 @@ lodash-es@^4.17.21: resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: +lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" - integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" - integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" @@ -4168,13 +4370,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.30.5: - version "0.30.10" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz" - integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - magic-string@0.30.8: version "0.30.8" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" @@ -4182,6 +4377,13 @@ magic-string@0.30.8: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.5: + version "0.30.10" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + magnet-uri@^7.0.5: version "7.0.5" resolved "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.5.tgz" @@ -4250,6 +4452,13 @@ mimic-response@^4.0.0: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz" integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -4257,21 +4466,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^5.1.1: +minimatch@^5.0.1, minimatch@^5.1.1: version "5.1.6" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -4292,13 +4487,6 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" @@ -4316,17 +4504,12 @@ minipass@^4.2.4: resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz" integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minipass@^7.0.4: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: version "7.0.4" resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== @@ -4369,16 +4552,16 @@ modern-ahocorasick@^1.0.0: resolved "https://registry.npmjs.org/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz" integrity sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA== -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mz@^2.4.0: version "2.7.0" resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" @@ -4776,16 +4959,11 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.2.4, "prettier@>= 3.0.0", prettier@>=3.0.0: +prettier@^3.2.4: version "3.2.5" resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz" integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - progress@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" @@ -4866,7 +5044,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@>=16.8: +react-dom@^18.2.0: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -4892,7 +5070,7 @@ react-loading-skeleton@^3.4.0: resolved "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz" integrity sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA== -"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", react-redux@^9.1.1: +react-redux@^9.1.1: version "9.1.1" resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.1.1.tgz" integrity sha512-5ynfGDzxxsoV73+4czQM56qF43vsmgJsO22rmAvU5tZT2z5Xow/A2uhhxwXuGTxgdReF3zcp7A80gma2onRs1A== @@ -4920,7 +5098,7 @@ react-router@6.23.0: dependencies: "@remix-run/router" "1.16.0" -"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", react@^18.0, react@^18.2.0, react@^18.3.1, "react@>= 16.8.0", react@>=16.3, react@>=16.8, react@>=16.8.0, "react@15.x || 16.x || 17.x || 18.x": +react@^18.2.0: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -4939,32 +5117,6 @@ read-config-file@6.3.2: json5 "^2.2.0" lazy-val "^1.0.4" -readable-stream@^2.0.0: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.0.5: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -4974,13 +5126,6 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-glob@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz" - integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== - dependencies: - minimatch "^5.1.0" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -4993,7 +5138,7 @@ redux-thunk@^3.1.0: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.0, redux@^5.0.1: +redux@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -5113,7 +5258,7 @@ roarr@^2.15.3: semver-compare "^1.0.0" sprintf-js "^1.1.2" -rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^4.13.0: +rollup@^4.13.0: version "4.17.0" resolved "https://registry.npmjs.org/rollup/-/rollup-4.17.0.tgz" integrity sha512-wZJSn0WMtWrxhYKQRt5Z6GIXlziOoMDFmbHmRfL3v+sBTAshx2DBq1AfMArB7eIjF63r4ocn2ZTAyUptg/7kmQ== @@ -5165,11 +5310,6 @@ safe-buffer@^5.0.1, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -5220,12 +5360,7 @@ semver-compare@^1.0.0: resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -semver@^6.2.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.1: +semver@^6.2.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -5389,20 +5524,6 @@ stat-mode@^1.0.0: resolved "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -5476,6 +5597,13 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -5561,7 +5689,7 @@ tar-fs@^2.0.0: pump "^3.0.0" tar-stream "^2.1.4" -tar-stream@^2.1.4, tar-stream@^2.2.0: +tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -5778,7 +5906,7 @@ typeorm@^0.3.20: uuid "^9.0.0" yargs "^17.6.2" -typescript@*, typescript@^5.3.3, typescript@>=4.2.0, typescript@>=4.9.5: +typescript@^5.3.3: version "5.4.5" resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -5863,12 +5991,19 @@ use-sync-external-store@^1.0.0: resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz" integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== +user-agents@^1.1.193: + version "1.1.193" + resolved "https://registry.yarnpkg.com/user-agents/-/user-agents-1.1.193.tgz#44858e607e8a6550603cd23a173b7bd1658dd638" + integrity sha512-NKJzgR2UoVu09WmHkwlvM6+WuqJzpGCi/CukqC/ohOKCWJV5NuqZJecnox7eSWPQ2FhihuM/qTt/EQKHyrCuJw== + dependencies: + lodash.clonedeep "^4.5.0" + utf8-byte-length@^1.0.1: version "1.0.4" resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -5912,7 +6047,7 @@ vite-plugin-svgr@^4.2.0: "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -"vite@^2.6.0 || 3 || 4 || 5", "vite@^4.0.0 || ^5.0.0", "vite@^4.0.3 || ^5.0.0", "vite@^4.2.0 || ^5.0.0", vite@^5.0.0, vite@^5.0.11, vite@^5.0.12: +vite@^5.0.0, vite@^5.0.11, vite@^5.0.12: version "5.2.10" resolved "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz" integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== @@ -6123,7 +6258,7 @@ xml-name-validator@^5.0.0: resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz" integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== -xmlbuilder@^15.1.1, xmlbuilder@>=11.0.1: +xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: version "15.1.1" resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== @@ -6201,12 +6336,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zip-stream@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz" - integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ== - dependencies: - archiver-utils "^3.0.4" - compress-commons "^4.1.2" - readable-stream "^3.6.0"