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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 VM$^D(8W>FjqiJ9?4GhIJ00147)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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
  • 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 N5Eu=C(GVae1OWR#S)Kp@ literal 206122 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 VM$^D(8W>FjqiJ9?4GhIJ00147)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"