diff --git a/package.json b/package.json index 71a78e151..edb4a71e3 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "@typescript-eslint/parser": "^7.3.1", "@vanilla-extract/webpack-plugin": "^2.3.7", "@vercel/webpack-asset-relocator-loader": "1.7.3", - "@vitejs/plugin-react-swc": "^3.6.0", "css-loader": "^6.0.0", "dotenv-webpack": "^8.1.0", "electron": "29.1.4", @@ -58,11 +57,8 @@ "style-loader": "^3.0.0", "ts-loader": "^9.2.2", "ts-node": "^10.0.0", - "tsconfig-paths": "^4.2.0", "tsconfig-paths-webpack-plugin": "^4.1.0", - "typescript": "^5.4.3", - "vite-plugin-svgr": "^4.2.0", - "vite-tsconfig-paths": "^4.3.2" + "typescript": "^5.4.3" }, "keywords": [], "license": "MIT", @@ -73,7 +69,6 @@ "@reduxjs/toolkit": "^2.2.2", "@vanilla-extract/css": "^1.14.1", "@vanilla-extract/recipes": "^0.5.2", - "@vanilla-extract/vite-plugin": "^4.0.6", "axios": "^1.6.8", "check-disk-space": "^3.4.0", "classnames": "^2.5.1", diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index af468855d..75e99f283 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -42,7 +42,7 @@ "pause": "Pause", "cancel": "Cancel", "remove": "Remove", - "remove_from_list": "Remove from list", + "remove_from_list": "Remove", "space_left_on_disk": "{{space}} left on disk", "eta": "Conclusion {{eta}}", "downloading_metadata": "Downloading metadata…", @@ -66,7 +66,8 @@ "add_to_library": "Add to library", "remove_from_library": "Remove from library", "delete_modal_title": "Are you sure?", - "delete_modal_description": "This will remove all game files from your system" + "delete_modal_description": "This will remove all game files from your system", + "no_downloads": "No downloads available" }, "activation": { "title": "Activate Hydra", @@ -94,7 +95,8 @@ "checking_files": "Checking files…", "starting_download": "Starting download…", "deleting": "Deleting files…", - "delete": "Remove all files" + "delete": "Remove all files", + "remove_from_list": "Remove" }, "settings": { "downloads_path": "Downloads path", diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json index c9d871d0a..eb6d88a4e 100644 --- a/src/locales/es/translation.json +++ b/src/locales/es/translation.json @@ -42,7 +42,7 @@ "pause": "Pausa", "cancel": "Cancelar", "remove": "Eliminar", - "remove_from_list": "Quitar de la lista", + "remove_from_list": "Quitar", "space_left_on_disk": "{{space}} restantes en el disco", "eta": "Finalizando {{eta}}", "downloading_metadata": "Descargando metadatos…", @@ -66,7 +66,8 @@ "delete_modal_title": "¿Estás seguro de esto?", "delete_modal_description": "Esto eliminará todos los archivos del juego de tu sistema", "add_to_library": "Agregar a la biblioteca", - "remove_from_library": "Eliminar de la biblioteca" + "remove_from_library": "Eliminar de la biblioteca", + "no_downloads": "No hay descargas disponibles" }, "activation": { "title": "Activar Hydra", @@ -94,7 +95,8 @@ "checking_files": "Verificando archivos…", "starting_download": "Iniciando descarga…", "deleting": "Eliminando archivos…", - "delete": "Eliminar todos los archivos" + "delete": "Eliminar todos los archivos", + "remove_from_list": "Eliminar" }, "settings": { "downloads_path": "Ruta de descarga", diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json index f1dc7bb28..cd00440d5 100644 --- a/src/locales/fr/translation.json +++ b/src/locales/fr/translation.json @@ -42,7 +42,7 @@ "pause": "Pause", "cancel": "Annuler", "remove": "Supprimer", - "remove_from_list": "Retirer de la liste", + "remove_from_list": "Retirer", "space_left_on_disk": "{{space}} restant sur le disque", "eta": "Conclusion dans {{eta}}", "downloading_metadata": "Téléchargement des métadonnées en cours…", @@ -66,7 +66,8 @@ "add_to_library": "Ajouter à la bibliothèque", "delete_modal_title": "Êtes-vous sûr de cela?", "delete_modal_description": "Cela effacera tous les fichiers de jeu de votre système", - "remove_from_library": "Supprimer de la bibliothèque" + "remove_from_library": "Supprimer de la bibliothèque", + "no_downloads": "Aucun téléchargement disponible" }, "activation": { "title": "Activer Hydra", @@ -94,7 +95,8 @@ "checking_files": "Vérification des fichiers…", "starting_download": "Démarrage du téléchargement…", "deleting": "Suppression des fichiers…", - "delete": "Supprimer tous les fichiers" + "delete": "Supprimer tous les fichiers", + "remove_from_list": "Retirer" }, "settings": { "downloads_path": "Chemin des téléchargements", diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json index bb6310aa7..239f82917 100644 --- a/src/locales/pt/translation.json +++ b/src/locales/pt/translation.json @@ -42,7 +42,7 @@ "pause": "Pausar", "cancel": "Cancelar", "remove": "Remover", - "remove_from_list": "Remover da lista", + "remove_from_list": "Remover", "space_left_on_disk": "{{space}} livres em disco", "eta": "Conclusão {{eta}}", "downloading_metadata": "Baixando metadados…", @@ -66,7 +66,8 @@ "add_to_library": "Adicionar à biblioteca", "remove_from_library": "Remover da biblioteca", "delete_modal_title": "Tem certeza disso?", - "delete_modal_description": "Isso apagará todos os arquivos do jogo do seu sistema" + "delete_modal_description": "Isso apagará todos os arquivos do jogo do seu sistema", + "no_downloads": "Nenhum download disponível" }, "activation": { "title": "Ativação", @@ -94,7 +95,8 @@ "checking_files": "Verificando arquivos…", "starting_download": "Iniciando download…", "deleting": "Removendo arquivos…", - "delete": "Apagar arquivos" + "delete": "Apagar arquivos", + "remove_from_list": "Remover" }, "settings": { "downloads_path": "Diretório dos downloads", diff --git a/src/main/entity/game-shop-cache.entity.ts b/src/main/entity/game-shop-cache.entity.ts index 193ef1ac4..f83e1b0c5 100644 --- a/src/main/entity/game-shop-cache.entity.ts +++ b/src/main/entity/game-shop-cache.entity.ts @@ -15,9 +15,12 @@ export class GameShopCache { @Column("text") shop: GameShop; - @Column("text") + @Column("text", { nullable: true }) serializedData: string; + @Column("text", { nullable: true }) + howLongToBeatSerializedData: string; + @Column("text", { nullable: true }) language: string; diff --git a/src/main/events/catalogue/get-game-shop-details.ts b/src/main/events/catalogue/get-game-shop-details.ts index 742ef9920..61629242b 100644 --- a/src/main/events/catalogue/get-game-shop-details.ts +++ b/src/main/events/catalogue/get-game-shop-details.ts @@ -39,14 +39,14 @@ const getGameShopDetails = async ( return [appDetails, localizedAppDetails]; }); - if (cachedData) { - const cachedDetails = JSON.parse( - cachedData.serializedData - ) as SteamAppDetails; + const cachedGame = cachedData?.serializedData + ? (JSON.parse(cachedData?.serializedData) as SteamAppDetails) + : null; + if (cachedGame) { return { - ...cachedDetails, - repacks: searchRepacks(cachedDetails.name), + ...cachedGame, + repacks: searchRepacks(cachedGame.name), objectID, } as ShopDetails; } diff --git a/src/main/events/catalogue/get-how-long-to-beat.ts b/src/main/events/catalogue/get-how-long-to-beat.ts index e737f3915..601a3bf3c 100644 --- a/src/main/events/catalogue/get-how-long-to-beat.ts +++ b/src/main/events/catalogue/get-how-long-to-beat.ts @@ -2,21 +2,44 @@ import type { GameShop, HowLongToBeatCategory } from "@types"; import { getHowLongToBeatGame, searchHowLongToBeat } from "@main/services"; import { registerEvent } from "../register-event"; +import { gameShopCacheRepository } from "@main/repository"; const getHowLongToBeat = async ( _event: Electron.IpcMainInvokeEvent, objectID: string, - _shop: GameShop, + shop: GameShop, title: string ): Promise => { - const response = await searchHowLongToBeat(title); - const game = response.data.find( - (game) => game.profile_steam === Number(objectID) - ); - - if (!game) return null; - const howLongToBeat = await getHowLongToBeatGame(String(game.game_id)); - return howLongToBeat; + const searchHowLongToBeatPromise = searchHowLongToBeat(title); + + const gameShopCache = await gameShopCacheRepository.findOne({ + where: { objectID, shop }, + }); + + const howLongToBeatCachedData = gameShopCache?.howLongToBeatSerializedData + ? JSON.parse(gameShopCache?.howLongToBeatSerializedData) + : null; + if (howLongToBeatCachedData) return howLongToBeatCachedData; + + return searchHowLongToBeatPromise.then(async (response) => { + const game = response.data.find( + (game) => game.profile_steam === Number(objectID) + ); + + if (!game) return null; + const howLongToBeat = await getHowLongToBeatGame(String(game.game_id)); + + gameShopCacheRepository.upsert( + { + objectID, + shop, + howLongToBeatSerializedData: JSON.stringify(howLongToBeat), + }, + ["objectID"] + ); + + return howLongToBeat; + }); }; registerEvent(getHowLongToBeat, { diff --git a/src/renderer/app.tsx b/src/renderer/app.tsx index 0680f506f..4e633bcf5 100644 --- a/src/renderer/app.tsx +++ b/src/renderer/app.tsx @@ -91,7 +91,7 @@ export function App() { useEffect(() => { if (contentRef.current) contentRef.current.scrollTop = 0; - }, [location.pathname]); + }, [location.pathname, location.search]); return ( <> diff --git a/src/renderer/components/hero/hero.css.ts b/src/renderer/components/hero/hero.css.ts index 2667d1652..8e7ae7dda 100644 --- a/src/renderer/components/hero/hero.css.ts +++ b/src/renderer/components/hero/hero.css.ts @@ -27,6 +27,12 @@ export const heroMedia = style({ zIndex: "-1", width: "100%", height: "100%", + transition: "all ease 0.2s", + selectors: { + [`${hero}:hover &`]: { + transform: "scale(1.05)", + }, + }, }); export const backdrop = style({ diff --git a/src/renderer/pages/downloads/downloads.tsx b/src/renderer/pages/downloads/downloads.tsx index 0165105de..868089f54 100644 --- a/src/renderer/pages/downloads/downloads.tsx +++ b/src/renderer/pages/downloads/downloads.tsx @@ -7,7 +7,7 @@ import { formatDownloadProgress, steamUrlBuilder } from "@renderer/helpers"; import { useDownload, useLibrary } from "@renderer/hooks"; import type { Game } from "@types"; -import { useEffect, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { BinaryNotFoundModal } from "../shared-modals/binary-not-found-modal"; import * as styles from "./downloads.css"; @@ -34,10 +34,14 @@ export function Downloads() { isGameDeleting, } = useDownload(); - useEffect(() => { - setFilteredLibrary(library); + const libraryWithDownloadedGamesOnly = useMemo(() => { + return library.filter((game) => game.status); }, [library]); + useEffect(() => { + setFilteredLibrary(libraryWithDownloadedGamesOnly); + }, [libraryWithDownloadedGamesOnly]); + const openGame = (gameId: number) => window.electron.openGame(gameId).then((isBinaryInPath) => { if (!isBinaryInPath) setShowBinaryNotFoundModal(true); @@ -182,6 +186,7 @@ export function Downloads() { > {t("download_again")} + - -
diff --git a/src/renderer/pages/game-details/game-details.css.ts b/src/renderer/pages/game-details/game-details.css.ts index 6145b9aed..ba4ed6c8b 100644 --- a/src/renderer/pages/game-details/game-details.css.ts +++ b/src/renderer/pages/game-details/game-details.css.ts @@ -34,12 +34,6 @@ export const heroBackdrop = style({ justifyContent: "space-between", }); -export const heroFooterButtonsSkeleton = style({ - display: "flex", - flexDirection: "row", - gap: `${SPACING_UNIT}px`, -}); - export const heroImage = style({ width: "100%", height: "100%", diff --git a/src/renderer/pages/game-details/hero-panel.tsx b/src/renderer/pages/game-details/hero-panel.tsx index 911a8dfec..ff63a6762 100644 --- a/src/renderer/pages/game-details/hero-panel.tsx +++ b/src/renderer/pages/game-details/hero-panel.tsx @@ -143,20 +143,37 @@ export function HeroPanel({ ); } - const lastUpdate = format(gameDetails.repacks[0].uploadDate!, "dd/MM/yyyy"); - const repacksCount = gameDetails.repacks.length; - - return ( - <> -

{t("updated_at", { updated_at: lastUpdate })}

-

{t("download_options", { count: repacksCount })}

- - ); + const [latestRepack] = gameDetails.repacks; + + if (latestRepack) { + const lastUpdate = format(latestRepack.uploadDate!, "dd/MM/yyyy"); + const repacksCount = gameDetails.repacks.length; + + return ( + <> +

{t("updated_at", { updated_at: lastUpdate })}

+

{t("download_options", { count: repacksCount })}

+ + ); + } + + return

{t("no_downloads")}

; }; const getActions = () => { const deleting = isGameDeleting(game?.id); + const toggleGameOnLibraryButton = ( + + ); + if (isGameDownloading) { return ( <> @@ -236,22 +253,18 @@ export function HeroPanel({ ); } - return ( - <> - - - - - ); + if (gameDetails && gameDetails.repacks.length) { + return ( + <> + {toggleGameOnLibraryButton} + + + ); + } + + return toggleGameOnLibraryButton; }; return ( diff --git a/yarn.lock b/yarn.lock index 03e7961cb..6743c0746 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2173,15 +2173,6 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== -"@rollup/pluginutils@^5.0.5": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - "@rollup/rollup-android-arm-eabi@4.14.3": version "4.14.3" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz#bddf05c3387d02fac04b6b86b3a779337edfed75" @@ -2326,7 +2317,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@8.1.0", "@svgr/core@^8.1.0": +"@svgr/core@8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== @@ -2345,7 +2336,7 @@ "@babel/types" "^7.21.3" entities "^4.4.0" -"@svgr/plugin-jsx@8.1.0", "@svgr/plugin-jsx@^8.1.0": +"@svgr/plugin-jsx@8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== @@ -2378,87 +2369,6 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swc/core-darwin-arm64@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.14.tgz#de570252c3f155f55536f0d6bb8bafaec2e99616" - integrity sha512-8iPfLhYNspBl836YYsfv6ErXwDUqJ7IMieddV3Ey/t/97JAEAdNDUdtTKDtbyP0j/Ebyqyn+fKcqwSq7rAof0g== - -"@swc/core-darwin-x64@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.14.tgz#4eefbe129e416f4c400656742ab7f30e01aff02e" - integrity sha512-9CqSj8uRZ92cnlgAlVaWMaJJBdxtNvCzJxaGj5KuIseeG6Q0l1g+qk8JcU7h9dAsH9saHTNwNFBVGKQo0W0ujg== - -"@swc/core-linux-arm-gnueabihf@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.14.tgz#bea4b94c32bb25de2816126dac299655529ba7f3" - integrity sha512-mfd5JArPITTzMjcezH4DwMw+BdjBV1y25Khp8itEIpdih9ei+fvxOOrDYTN08b466NuE2dF2XuhKtRLA7fXArQ== - -"@swc/core-linux-arm64-gnu@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.14.tgz#52063214f4a14d6a0c3c6059ed9e7ba1062f6b46" - integrity sha512-3Lqlhlmy8MVRS9xTShMaPAp0oyUt0KFhDs4ixJsjdxKecE0NJSV/MInuDmrkij1C8/RQ2wySRlV9np5jK86oWw== - -"@swc/core-linux-arm64-musl@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.14.tgz#7e7deea7b1b3d0c9944cc8e9ba948fcc785158ea" - integrity sha512-n0YoCa64TUcJrbcXIHIHDWQjdUPdaXeMHNEu7yyBtOpm01oMGTKP3frsUXIABLBmAVWtKvqit4/W1KVKn5gJzg== - -"@swc/core-linux-x64-gnu@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.14.tgz#301133ea3ee347568886f2489837e991e96d44db" - integrity sha512-CGmlwLWbfG1dB4jZBJnp2IWlK5xBMNLjN7AR5kKA3sEpionoccEnChOEvfux1UdVJQjLRKuHNV9yGyqGBTpxfQ== - -"@swc/core-linux-x64-musl@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.14.tgz#86b8e987a814209cd0dd0f21cbc1134305dfffd5" - integrity sha512-xq4npk8YKYmNwmr8fbvF2KP3kUVdZYfXZMQnW425gP3/sn+yFQO8Nd0bGH40vOVQn41kEesSe0Z5O/JDor2TgQ== - -"@swc/core-win32-arm64-msvc@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.14.tgz#eb56b8977e3542665929c3963bd7dc18fe5b2556" - integrity sha512-imq0X+gU9uUe6FqzOQot5gpKoaC00aCUiN58NOzwp0QXEupn8CDuZpdBN93HiZswfLruu5jA1tsc15x6v9p0Yg== - -"@swc/core-win32-ia32-msvc@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.14.tgz#72e119038b9d8743b13bb933b8e192acd9f501f9" - integrity sha512-cH6QpXMw5D3t+lpx6SkErHrxN0yFzmQ0lgNAJxoDRiaAdDbqA6Col8UqUJwUS++Ul6aCWgNhCdiEYehPaoyDPA== - -"@swc/core-win32-x64-msvc@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.14.tgz#f5a3b1a241708b0628a07458e5bedbf67a1b9595" - integrity sha512-FmZ4Tby4wW65K/36BKzmuu7mlq7cW5XOxzvufaSNVvQ5PN4OodAlqPjToe029oma4Av+ykJiif64scMttyNAzg== - -"@swc/core@^1.3.107": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.14.tgz#8bad316c0119f626bb1b181ba7a988ef9d14e9cc" - integrity sha512-tHXg6OxboUsqa/L7DpsCcFnxhLkqN/ht5pCwav1HnvfthbiNIJypr86rNx4cUnQDJepETviSqBTIjxa7pSpGDQ== - dependencies: - "@swc/counter" "^0.1.2" - "@swc/types" "^0.1.5" - optionalDependencies: - "@swc/core-darwin-arm64" "1.4.14" - "@swc/core-darwin-x64" "1.4.14" - "@swc/core-linux-arm-gnueabihf" "1.4.14" - "@swc/core-linux-arm64-gnu" "1.4.14" - "@swc/core-linux-arm64-musl" "1.4.14" - "@swc/core-linux-x64-gnu" "1.4.14" - "@swc/core-linux-x64-musl" "1.4.14" - "@swc/core-win32-arm64-msvc" "1.4.14" - "@swc/core-win32-ia32-msvc" "1.4.14" - "@swc/core-win32-x64-msvc" "1.4.14" - -"@swc/counter@^0.1.2", "@swc/counter@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - -"@swc/types@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.6.tgz#2f13f748995b247d146de2784d3eb7195410faba" - integrity sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg== - dependencies: - "@swc/counter" "^0.1.3" - "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -2592,7 +2502,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -3002,7 +2912,7 @@ modern-ahocorasick "^1.0.0" outdent "^0.8.0" -"@vanilla-extract/integration@^7.0.0", "@vanilla-extract/integration@^7.1.2": +"@vanilla-extract/integration@^7.0.0": version "7.1.2" resolved "https://registry.yarnpkg.com/@vanilla-extract/integration/-/integration-7.1.2.tgz#1685cc899babb3d6f31f4450d95a8324acc9ed17" integrity sha512-jpjw0L3P1E+U9L8OAFVMGpPFbNPD+/Vpfew7oOKBYipCrRZEqShu3WLXuUxjXz/mcIH7KCS5nasIdy2VclbEaQ== @@ -3031,13 +2941,6 @@ resolved "https://registry.yarnpkg.com/@vanilla-extract/recipes/-/recipes-0.5.2.tgz#fccd09af9ce1ab3abd17fcf20cd649df0e7f30d3" integrity sha512-IcDw3tFOcSJ+DUxL8MIGbg03eyccYb6NBO/rcgp439PDuHxo5GIQefVeGc1L5mIr/lUVPwDc1N5OXTHiGpiz1A== -"@vanilla-extract/vite-plugin@^4.0.6": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@vanilla-extract/vite-plugin/-/vite-plugin-4.0.7.tgz#40cd5de73bacf89e2ca69ba61163f50e62e77b3c" - integrity sha512-uRAFWdq5Eq0ybpgW2P0LNOw8eW+MTg/OFo5K0Hsl2cKu/Tu2tabCsBf6vNjfhDrm4jBShHy1wJIVcYxf6sczVQ== - dependencies: - "@vanilla-extract/integration" "^7.1.2" - "@vanilla-extract/webpack-plugin@^2.3.7": version "2.3.7" resolved "https://registry.yarnpkg.com/@vanilla-extract/webpack-plugin/-/webpack-plugin-2.3.7.tgz#46ead16c6cf4c6e3477d112e7750a042c32db804" @@ -3055,13 +2958,6 @@ dependencies: resolve "^1.10.0" -"@vitejs/plugin-react-swc@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz#dc9cd1363baf3780f3ad3e0a12a46a3ffe0c7526" - integrity sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g== - dependencies: - "@swc/core" "^1.3.107" - "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -5420,11 +5316,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -6148,11 +6039,6 @@ globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -9466,7 +9352,16 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9544,7 +9439,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9876,11 +9778,6 @@ ts-node@^10.0.0: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfck@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.3.tgz#d9bda0e87d05b1c360e996c9050473c7e6f8084f" - integrity sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA== - tsconfig-paths-webpack-plugin@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" @@ -9890,7 +9787,7 @@ tsconfig-paths-webpack-plugin@^4.1.0: enhanced-resolve "^5.7.0" tsconfig-paths "^4.1.2" -tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: +tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== @@ -10240,24 +10137,6 @@ vite-node@^1.2.0: picocolors "^1.0.0" vite "^5.0.0" -vite-plugin-svgr@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b" - integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA== - dependencies: - "@rollup/pluginutils" "^5.0.5" - "@svgr/core" "^8.1.0" - "@svgr/plugin-jsx" "^8.1.0" - -vite-tsconfig-paths@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz#321f02e4b736a90ff62f9086467faf4e2da857a9" - integrity sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - tsconfck "^3.0.3" - vite@^5.0.0, vite@^5.0.11: version "5.2.8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" @@ -10565,7 +10444,16 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==