From a45817ca106dc9c9e2816cd6693033741a1b7ed0 Mon Sep 17 00:00:00 2001 From: AuroraLS3 Date: Sun, 9 Apr 2023 07:37:31 +0000 Subject: [PATCH] 5.5.2335 --- .../assets/plan/plan/bungeeconfig.yml | 1 + .../assets/plan/plan/locale/locale_CS.yml | 264 +++++------ react/dashboard/dashboard/package.json | 18 +- .../src/components/accordion/Accordion.js | 1 - .../src/components/alert/QueryPath.js | 3 +- .../src/components/animation/LoadIn.js | 2 +- .../cards/common/GeolocationsCard.js | 4 +- .../cards/network/PerformanceGraphsCard.js | 233 ++++++---- .../cards/network/ServersTableCard.js | 4 +- .../components/cards/player/NicknamesCard.js | 2 +- .../components/cards/query/FilterDropdown.js | 4 +- .../src/components/cards/query/FilterList.js | 2 +- .../graphs/NetworkOnlineActivityGraphsCard.js | 25 +- .../server/tables/PerformanceAsNumbersCard.js | 16 +- .../server/tables/PlayerbaseTrendsCard.js | 22 +- .../server/tables/ServerWeekComparisonCard.js | 31 +- .../server/values/ServerAsNumbersCard.js | 24 +- .../components/extensions/ExtensionCard.js | 3 +- .../graphs/StackedPlayersOnlineGraph.js | 73 +++ .../src/components/input/MultiSelect.js | 2 +- .../modal/PluginInformationModal.js | 4 +- .../src/components/navigation/Header.js | 4 +- .../components/navigation/MainPageRedirect.js | 8 +- .../src/components/navigation/Sidebar.js | 4 +- .../src/components/table/GroupTable.js | 2 +- .../table/PerformanceAsNumbersTable.js | 28 +- .../src/components/table/ServersTable.js | 22 +- .../dashboard/src/hooks/authenticationHook.js | 17 +- .../src/hooks/serverExtensionDataContext.js | 6 +- .../dashboard/src/service/serverService.js | 4 +- .../dashboard/src/style/sb-admin-2.css | 10 +- react/dashboard/dashboard/src/util/colors.js | 47 +- .../dashboard/src/views/layout/LoginPage.js | 32 +- .../dashboard/src/views/layout/NetworkPage.js | 4 +- .../dashboard/src/views/layout/PlayerPage.js | 4 + .../dashboard/src/views/layout/PlayersPage.js | 4 + .../dashboard/src/views/layout/QueryPage.js | 4 + .../src/views/network/NetworkPerformance.js | 14 +- .../src/views/player/PlayerOverview.js | 2 +- react/dashboard/dashboard/yarn.lock | 427 +++++++++--------- 40 files changed, 835 insertions(+), 546 deletions(-) create mode 100644 react/dashboard/dashboard/src/components/graphs/StackedPlayersOnlineGraph.js diff --git a/Plan/src/main/resources/assets/plan/plan/bungeeconfig.yml b/Plan/src/main/resources/assets/plan/plan/bungeeconfig.yml index b25c04c1d..a5c58af88 100644 --- a/Plan/src/main/resources/assets/plan/plan/bungeeconfig.yml +++ b/Plan/src/main/resources/assets/plan/plan/bungeeconfig.yml @@ -5,6 +5,7 @@ # https://github.com/plan-player-analytics/Plan/wiki/Bukkit-Configuration # ----------------------------------------------------- Server: + ServerName: Plan IP: 0.0.0.0 Network: Name: Plan diff --git a/Plan/src/main/resources/assets/plan/plan/locale/locale_CS.yml b/Plan/src/main/resources/assets/plan/plan/locale/locale_CS.yml index 233aacbee..922c04cb7 100644 --- a/Plan/src/main/resources/assets/plan/plan/locale/locale_CS.yml +++ b/Plan/src/main/resources/assets/plan/plan/locale/locale_CS.yml @@ -5,7 +5,7 @@ command: description: "Název souboru zálohy (citlivé na velikost písmen)" name: "záloha" code: - description: "Kód použitý k dokončení registrace.." + description: "Kód použitý k dokončení registrace." name: "${code}" dbBackup: description: "Typ databáze k zálohování. Použita aktuální databáze, pokud není specifikováno." @@ -54,7 +54,7 @@ command: manage: confirm: "> §cPřidejte '-a' argument k potvrzení provedení: ${0}" confirmOverwrite: "Data v ${0} budou přepsána!" - confirmPartialRemoval: "Join Address Data for Server ${0} in ${1} will be removed!" + confirmPartialRemoval: "Data IP adres připojení pro server ${0} na ${1} byla smazána!" confirmRemoval: "Data v ${0} budou smazána!" fail: "> §cNěco se pokazilo: ${0}" failFileNotFound: "> §cNenalezen soubor v ${0}" @@ -64,7 +64,7 @@ command: failSameServer: "Nelze označit tento server jako odinstalován (Jste na něm)" hotswap: "§eNezapomeňte přehodit na novou databázi (/plan db hotswap ${0}) & reload pluginu." importers: "Importery:" - preparing: "Preparing.." + preparing: "Načítání.." progress: "${0} / ${1} zpracovávání.." start: "> §2Zpracovávám data.." success: "> §aÚspěch!" @@ -163,27 +163,27 @@ command: description: "Ukázat json Hráčských čistých dat." inDepth: "Dovolí stáhnout hráčská data v json formátu. Všechna." logout: - description: "Log out other users from the panel." + description: "Odhlášení ostatních uživatelů z panelu." inDepth: "Vložte argument přezdívky hráče k odhlášení jiného uživatele, použijte * pro odhlášení všech." migrateToOnlineUuids: - description: "Migrate offline uuid data to online uuids" + description: "Migrace offline uuid dat na online uuid" network: description: "Ukázat stránku sítě" - inDepth: "Získání odkazu k /network page, pouze na sítích." + inDepth: "Získání odkazu k /network stránce, pouze na sítích." player: description: "Ukázat stránku hráče" - inDepth: "Získání odkazu k /player page specifického hráče, či aktuálního." + inDepth: "Získání odkazu ke stránce /player specifického hráče, či aktuálního." players: description: "Ukázat stránku hráčů" - inDepth: "Získání odkazu k /players page k zobrazení seznamu hráčů." + inDepth: "Získání odkazu ke stránce /players k zobrazení seznamu hráčů." register: description: "Registrovat web uživatele" - inDepth: "Použijte bez argumentů k odkazu na stránku registrace. Použijte --code [kod] pro registraci k získání uživatele." + inDepth: "Použijte bez argumentů k odkazu na stránku registrace. Použijte --code [kód] pro registraci k získání uživatele." reload: description: "Restartuje plugin Plan" inDepth: "Vypnout a zapnout plugin k obnově jakýchkoli změn v configu." removejoinaddresses: - description: "Remove join addresses of a specified server" + description: "Odstranění adres připojení zadaného serveru" search: description: "Hledat podle jména hráče" inDepth: "Zobrazit seznam všech hráčů souhlasísích s daným jménem." @@ -265,8 +265,8 @@ html: authFailedTips: "- Ujistěte se, že jste zaregistrovaní s uživatelem s /plan register
- Zkontrolujte zda je jméno a heslo správné
- Jméno a heslo jsou citlivá na velká/malá písmena

Pokud jste zapomněli heslo, zeptejte se člena týmu ke smazání vašeho starého uživatele či nové registraci." noServersOnline: "Žádné online servery k vykonání žádosti." playerNotSeen: "Hráč nebyl nenalezen." - serverNotExported: "Server doesn't exist, its data might not have been exported yet." - serverNotSeen: "Server doesn't exist" + serverNotExported: "Server neexistuje, je možné, že jeho data ještě nebyla exportována." + serverNotSeen: "Server neexistuje" generic: none: "Žádný" label: @@ -277,26 +277,26 @@ html: afkTime: "AFK čas" all: "Vše" allTime: "Celkově" - alphabetical: "Alphabetical" + alphabetical: "Abecední řazení" apply: "Apply" asNumbers: "statistiky" - average: "Average first session length" + average: "Průměrná délka prvního připojení" averageActivePlaytime: "Průměrná herní aktivita" averageAfkTime: "Průměrný AFK čas" - averageChunks: "Průměr chunků" - averageCpuUsage: "Average CPU Usage" - averageEntities: "Průměr entit" + averageChunks: "Průměrně chunků" + averageCpuUsage: "Průměrné využití CPU" + averageEntities: "Průměrně entit" averageKdr: "Průměr KDR" averageMobKdr: "Průměr Mob KDR" averagePing: "Průměrný ping" - averagePlayers: "Average Players" + averagePlayers: "Průměrně hráčů" averagePlaytime: "Průměr herní doby" - averageRamUsage: "Average RAM Usage" - averageServerDowntime: "Average Downtime / Server" - averageSessionLength: "Průměrná délka relace" - averageSessions: "Průměrná relace" + averageRamUsage: "Průměrné využití RAM" + averageServerDowntime: "Průměrná doba vypnutí / Serveru" + averageSessionLength: "Průměrná délka připojení" + averageSessions: "Průměr připojení" averageTps: "Průměr TPS" - averageTps7days: "Average TPS (7 days)" + averageTps7days: "Proměr TPS (7 dní)" banned: "Zabanován" bestPeak: "Nejvíce hráčů" bestPing: "Nejlepší ping" @@ -308,7 +308,7 @@ html: cpuRam: "CPU & RAM" cpuUsage: "CPU Usage" currentPlayerbase: "Aktuální základna hráčů" - currentUptime: "Current Uptime" + currentUptime: "Aktuální doba zapnutí" dayByDay: "Den po dni" dayOfweek: "Den týdne" deadliestWeapon: "Nejsmrtelnější PvP zbraň" @@ -318,72 +318,72 @@ html: downtime: "Offline doba" duringLowTps: "Při nízkých TPS:" entities: "Entity" - exported: "Data export time" + exported: "Doba exportu dat" favoriteServer: "Oblíbený server" firstSession: "První relace" firstSessionLength: - average: "Average first session length" - median: "Median first session length" + average: "Průměrná délka prvního připojení" + median: "Medián prvního připojení" geoProjection: - dropdown: "Select projection" - equalEarth: "Equal Earth" + dropdown: "Zvolte projekci" + equalEarth: "Rovná země" mercator: "Mercator" miller: "Miller" - ortographic: "Ortographic" + ortographic: "Ortografie" geolocations: "Geolokace" help: - activityIndexBasis: "Activity index is based on non-AFK playtime in the past 3 weeks (21 days). Each week is considered separately." - activityIndexExample1: "If someone plays as much as threshold every week, they are given activity index ~3." - activityIndexExample2: "Very active is ~2x the threshold (y ≥ 3.75)." - activityIndexExample3: "The index approaches 5 indefinitely." - activityIndexVisual: "Here is a visualization of the curve where y = activity index, and x = playtime per week / threshold." - activityIndexWeek: "Week {}" - examples: "Examples" + activityIndexBasis: "Index aktivity vychází z času stráveného hraním mimo AFK za poslední 3 týdny (21 dní). Každý týden se posuzuje zvlášť." + activityIndexExample1: "Pokud někdo hraje každý týden tolik, kolik je limit, má index aktivity ~3." + activityIndexExample2: "Velmi aktivní je ~2x prahová hodnota (y ≥ 3,75)." + activityIndexExample3: "Index se neomezeně blíží hodnotě 5." + activityIndexVisual: "Zde je vizualizace křivky, kde y = index aktivity a x = doba hraní za týden / prahová hodnota." + activityIndexWeek: "Týden {}" + examples: "Příklady" graph: - labels: "You can hide/show a group by clicking on the label at the bottom." - title: "Graph" - zoom: "You can Zoom in by click + dragging on the graph." - playtimeUnit: "hours" + labels: "Skupinu můžete skrýt/zobrazit kliknutím na štítek v dolní části." + title: "Graf" + zoom: "Graf si můžete přiblížit kliknutím a táhnutím." + playtimeUnit: "hodiny" retention: - calculationStep1: "First the data is filtered using '<>' option. Any players with 'registerDate' outside the time range are ignored." - calculationStep2: "Then it is grouped into groups of players using '<0>' option, eg. With '<1>': All players who registered in January 2023, February 2023, etc" - calculationStep3: "Then the '<0>' and '<1>' options select which visualization to render." - calculationStep4: "'<>' controls how many points the graph has, eg. 'Days' has one point per day." - calculationStep5: "On each calculated point all players are checked for the condition." - calculationStep6: "Select X Axis below to see conditions." - calculationStepDate: "This visualization shows the different groups of players that are still playing on your server. The visualization uses lastSeen date. If x < lastSeenDate, the player is visible on the graph." - calculationStepDeltas: "This visualization is most effective using Player Count as the Y Axis. The visualization shows net gain of players (How many players joined minus players who stopped playing). The visualization uses both registered and lastSeen dates. If registerDate < x < lastSeenDate, the player is visible on the graph." - calculationStepPlaytime: "This visualization tells how long the gameplay loop keeps players engaged on your server. The visualization uses playtime. If x < playtime, the player is visible on the graph." - calculationStepTime: "This visualization tells how long people keep coming back to play on the server after they join the first time. The visualization uses timeDifference. If x < timeDifference, the player is visible on the graph." - compareJoinAddress: "Grouping by join address allows measuring advertising campaigns on different sites." - compareMonths: "You can compare different months by changing the '<0>' option to '<1>'" + calculationStep1: "Nejprve se data filtrují pomocí možnosti '<>'. Hráči s 'registerDate' mimo časový rozsah jsou ignorováni." + calculationStep2: "Poté je rozdělíme do skupin hráčů pomocí možnosti '<0>', např. pomocí '<1>': Všichni hráči, kteří se zaregistrovali v lednu 2023, únoru 2023 atd." + calculationStep3: "Možnosti '<0>' a '<1>' pak vybírají, která vizualizace se má vykreslit." + calculationStep4: "'<>' řídí, kolik bodů má graf, např. 'Days' má jeden bod za den." + calculationStep5: "V každém vypočteném bodě se u všech hráčů kontroluje, zda je splněna podmínka." + calculationStep6: "Pro zobrazení podmínek vyberte níže uvedenou osu X." + calculationStepDate: "Tato vizualizace zobrazuje různé skupiny hráčů, kteří stále hrají na vašem serveru. Vizualizace používá datum lastSeen. Pokud x < lastSeenDate, je hráč v grafu viditelný." + calculationStepDeltas: "Tato vizualizace je nejefektivnější při použití počtu hráčů jako osy Y. Vizualizace ukazuje čistý přírůstek hráčů (kolik hráčů se připojilo mínus hráči, kteří přestali hrát). Vizualizace používá data registrovaných i naposledy viděných hráčů. Pokud je registerDate < x < lastSeenDate, hráč je v grafu viditelný." + calculationStepPlaytime: "Tato vizualizace ukazuje, jak dlouho se hráči na vašem serveru věnují hraní. Vizualizace využívá dobu hraní. Pokud je x < době hraní, je hráč na grafu viditelný." + calculationStepTime: "Tato vizualizace ukazuje, jak dlouho se lidé vracejí hrát na server poté, co se připojili poprvé. Vizualizace využívá funkci timeDifference. Pokud je x < timeDifference, je hráč v grafu viditelný." + compareJoinAddress: "Seskupení podle adresy připojení umožňuje měřit reklamní kampaně na různých stránkách." + compareMonths: "Různé měsíce můžete porovnat změnou možnosti '<0>' na '<1>'." examples: - adCampaign: "Comparing player gain of different ad campaigns using different Join Addresses (anonymized)" - deltas: "<> shows net gain of players." - pattern: "A general pattern emerges when all players start leaving the server at the same time" - plateau: "Comparing player gain of different months. Plateaus suggest there were players Plan doesn't know about. In this example Plan was installed in January 2022." - playtime: "Playtime tells how long the gameplay loop keeps players engaged on your server." - stack: "Cumulative player gain can be checked with stacked player count as Y axis" - howIsItCalculated: "How it is calculated" - howIsItCalculatedData: "The graph is generated from player data:" - options: "Select the options to analyze different aspects of Player Retention." - retentionBasis: "New player retention is calculated based on session data. If a registered player has played within latter half of the timespan, they are considered retained." - testPrompt: "Test it out:" - testResult: "Test result" - threshold: "Threshold" - thresholdUnit: "hours / week" - tips: "Tips" - usingTheGraph: "Using the Graph" + adCampaign: "Srovnání zisku hráčů z různých reklamních kampaní s použitím různých adres pro připojení (anonymizované)" + deltas: "<> ukazuje čistý zisk hráčů." + pattern: "Když všichni hráči začnou opouštět server ve stejnou dobu, objeví se obecný vzorec." + plateau: "Srovnání zisku hráčů v různých měsících. Plochy naznačují, že existují hráči, o kterých Plan neví. V tomto příkladu byl Plan nainstalován v lednu 2022." + playtime: "Doba hraní udává, jak dlouho jsou hráči na vašem serveru zapojeni do herní smyčky." + stack: "Kumulativní zisk hráčů lze zkontrolovat pomocí počtu hráčů na hromádce jako osy Y." + howIsItCalculated: "Jak se vypočítává" + howIsItCalculatedData: "Graf je generován z údajů o hráči:" + options: "Vyberte možnosti pro analýzu různých aspektů udržení hráčů." + retentionBasis: "Udržení nových hráčů se vypočítává na základě údajů o relacích. Pokud registrovaný hráč hrál v druhé polovině časového období, je považován za udrženého." + testPrompt: "Vyzkoušejte si to:" + testResult: "Výsledek testu" + threshold: "Prahová hodnota" + thresholdUnit: "hodin / týdnů" + tips: "Tipy" + usingTheGraph: "Použití grafu" hourByHour: "Hodina po hodině" inactive: "Neaktivní" indexInactive: "Neaktivní" indexRegular: "Pravidelný" information: "INFORMACE" - insights: "Insights" + insights: "Postřehy" insights30days: "Postřehy za 30 dní" irregular: "Nepravidelný" - joinAddress: "Join Address" - joinAddresses: "Připojovací IP" + joinAddress: "Adresa Připojení" + joinAddresses: "IP Připojení" kdr: "KDR" killed: "Zabit" last24hours: "Posledních 24 hodin" @@ -392,7 +392,7 @@ html: lastConnected: "Poslední připojení" lastPeak: "Naposledy nejvíce hráčů" lastSeen: "Naposledy viděn" - latestJoinAddresses: "Latest Join Addresses" + latestJoinAddresses: "Poslední adresy pro připojení" length: " Délka" links: "ODKAZY" loadedChunks: "Načtené chunky" @@ -401,9 +401,9 @@ html: loneNewbieJoins: "Samotná připojení nováčků" longestSession: "Nejdelší relace" lowTpsSpikes: "Nejnižší TPS" - lowTpsSpikes7days: "Low TPS Spikes (7 days)" + lowTpsSpikes7days: "Nízké hodnoty TPS (7 dní)" maxFreeDisk: "Max. volného disku" - medianSessionLength: "Median Session Length" + medianSessionLength: "Medián délky relace" minFreeDisk: "Min. volného disku" mobDeaths: "Smrti způsobené moby" mobKdr: "Mob KDR" @@ -419,9 +419,9 @@ html: new: "Nový" newPlayerRetention: "Udržení nových hráčů" newPlayers: "Noví hráči" - newPlayers7days: "New Players (7 days)" + newPlayers7days: "Noví hráči (7 dní)" nickname: "Přezdívka" - noDataToDisplay: "No Data to Display" + noDataToDisplay: "Žádná data k zobrazení" now: "Nyní" onlineActivity: "Online aktivita" onlineActivityAsNumbers: "Online aktivita v číslech" @@ -437,21 +437,21 @@ html: player: "Hráč" playerDeaths: "Smrti způsobené hráči" playerKills: "Zabití hráči" - playerKillsVictimIndicator: "Player was killed within 24h of first time they were seen (Time since registered: <>)." + playerKillsVictimIndicator: "Hráč byl zabit do 24 hodin od doby, kdy se poprvé připojil (Čas od registrace): <>)." playerList: "Seznam hráčů" playerOverview: "Přehled hráče" playerPage: "Stránka hráče" - playerRetention: "Player Retention" + playerRetention: "Udržení hráčů" playerbase: "Hráči" playerbaseDevelopment: "Vývoj aktivity hráčů" - playerbaseOverview: "Playerbase Overview" + playerbaseOverview: "Přehled hráčské základny" players: "Hráči" playersOnline: "Hráči online" - playersOnlineNow: "Players Online (Now)" + playersOnlineNow: "Hráči online (Nyní)" playersOnlineOverview: "Přehled online aktivity" playtime: "Herní čas" plugins: "Pluginy" - pluginsOverview: "Plugins Overview" + pluginsOverview: "Přehled pluginů" punchcard: "Štítky" punchcard30days: "Štítek pro 30 dní" pvpPve: "PvP & PvE" @@ -459,7 +459,7 @@ html: query: "Vytvořit dotaz" quickView: "Rychlé zobrazení" ram: "RAM" - ramUsage: "RAM Usage" + ramUsage: "Využití RAM" recentKills: "Poslední zabití" recentPvpDeaths: "Poslední PvP smrti" recentPvpKills: "Poslední PvP zabití" @@ -470,56 +470,56 @@ html: regularPlayers: "Pravidelní hráči" relativeJoinActivity: "Relativní aktivita připojení" retention: - groupByNone: "No grouping" - groupByTime: "Group registered by" - inAnytime: "any time" - inLast180d: "in the last 6 months" - inLast30d: "in the last 30 days" - inLast365d: "in the last 12 months" - inLast730d: "in the last 24 months" - inLast7d: "in the last 7 days" - inLast90d: "in the last 3 months" - playersRegisteredInTime: "Players who registered" - retainedPlayersPercentage: "Retained Players %" - timeSinceRegistered: "Time since register date" - timeStep: "Time step" + groupByNone: "Žádné seskupení" + groupByTime: "Skupina registrovaná" + inAnytime: "kdykoli" + inLast180d: "za posledních 6 měsíců" + inLast30d: "za posledních 30 dní" + inLast365d: "za posledních 12 měsících" + inLast730d: "za posledních 24 měsícíců" + inLast7d: "za posledních 7 dní" + inLast90d: "za posledních 90 měsíců" + playersRegisteredInTime: "Hráči, kteří se zaregistrovali" + retainedPlayersPercentage: "Zadržení hráči %" + timeSinceRegistered: "Doba od data registrace" + timeStep: "Časový posun" secondDeadliestWeapon: "2. PvP Zbraň" seenNicknames: "Viděné přezdívky" server: "Server" serverAnalysis: "Analýza serveru" serverAsNumberse: "Statistiky serveru" - serverCalendar: "Server Calendar" - serverDowntime: "Server offline" - serverOccupied: "Server plný" + serverCalendar: "Kalendář serveru" + serverDowntime: "Server je offline" + serverOccupied: "Server je plný" serverOverview: "Přehled serveru" serverPage: "Stránka serveru" serverPlaytime: "Herní čas serveru" serverPlaytime30days: "Herní čas serveru za 30 dní" - serverSelector: "Server selector" + serverSelector: "Výběr serveru" servers: "Servery" serversTitle: "SERVERY" session: "Relace" - sessionCalendar: "Session Calendar" + sessionCalendar: "Kalendář relací" sessionEnded: " Ukončeno" sessionMedian: "Střední hodnota relací" sessionStart: "Započatá relace" sessions: "Relace" - sortBy: "Sort By" - stacked: "Stacked" + sortBy: "Seřadit podle" + stacked: "Zaplnění" themeSelect: "Zvolené téma" thirdDeadliestWeapon: "3. PvP Zbraň" thirtyDays: "30 dní" thirtyDaysAgo: "před 30 dny" time: - date: "Date" - day: "Day" - days: "Days" - hours: "Hours" - month: "Month" - months: "Months" - week: "Week" - weeks: "Weeks" - year: "Year" + date: "Datum" + day: "Den" + days: "Dní" + hours: "Hodin" + month: "Měsíc" + months: "Měsíců" + week: "Týden" + weeks: "Týdnů" + year: "Rok" timesKicked: "Počet vykopnutí" toMainPage: "Zpět na hlavní stránku" total: "Total" @@ -528,15 +528,15 @@ html: totalPlayers: "Hráčů celkem" totalPlayersOld: "Celkem hráčů" totalPlaytime: "Herní doba celkem" - totalServerDowntime: "Total Server Downtime" + totalServerDowntime: "Celková doba vypnutí serveru" tps: "TPS" trend: "Trend" trends30days: "Trendy za 30 dní" uniquePlayers: "Unikátní hráči" - uniquePlayers7days: "Unique Players (7 days)" + uniquePlayers7days: "Unikátních hráčů (7 dní)" unit: - percentage: "Percentage" - playerCount: "Player Count" + percentage: "Procento" + playerCount: "Počet hráčů" veryActive: "Velmi aktivní" weekComparison: "Týdenní srovnání" weekdays: "'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota', 'Neděle'" @@ -547,7 +547,7 @@ html: yAxis: "Y Axis" login: failed: "Přihlašování selhalo: " - forgotPassword: "Zapomněl jste heslo?" + forgotPassword: "Zapomněli jste heslo?" forgotPassword1: "Zapomněl jste heslo? Odregistruj se a registruj se znovu." forgotPassword2: "Pro odstranění aktuálního uživatele použij následující příkaz ve hře:" forgotPassword3: "Nebo použij konzoli:" @@ -587,19 +587,19 @@ html: name: "Ban status" banned: "Zabanovaní" country: - text: "have joined from country" + text: "se připojili ze země" generic: allPlayers: "Všichni hráči" and: "a " start: "hráčů, kteří" hasPlayedOnServers: - name: "Has played on one of servers" - text: "have played on at least one of" + name: "Hrál na jednom ze serverů" + text: "hrál alespoň na jednom z" hasPluginBooleanValue: - name: "Has plugin boolean value" - text: "have Plugin boolean value" + name: "Plugin má logickou hodnotu" + text: "plugin má logickou hodnotu" joinAddress: - text: "joined with address" + text: "se připojil za pomoci ip" nonOperators: "Bez OP" notBanned: "Nezabanovaní" operatorStatus: @@ -625,10 +625,10 @@ html: from: ">od" makeAnother: "Vytvořit další dotaz" servers: - all: "using data of all servers" - many: "using data of {number} servers" - single: "using data of 1 server" - two: "using data of 2 servers" + all: "použití dat všech serverů" + many: "použít data {number} serverů" + single: "použít data 1 serveru" + two: "použít data 2 serverů" to: ">do" view: "Zobrazit pohled" performQuery: "Provést dotaz!" @@ -692,9 +692,9 @@ plugin: processingComplete: "Zpracování dokončeno." savingSessions: "Ukládání nedokončené relace." savingSessionsTimeout: "Překročen časový limit, ukládánm nedokončené relace pro příští spojení." - waitingDb: "Čekání na dokončení dotazu, aby se zabránilo pádu JVM SQLite.." + waitingDb: "Čekání na dokončení dotazu, aby se zabránilo pádu JVM SQLite." waitingDbComplete: "Uzavřené připojení SQLite." - waitingTransactions: "Čekám na nedokončené transakce, aby nedošlo ke ztrátě dat.." + waitingTransactions: "Čekám na nedokončené transakce, aby nedošlo ke ztrátě dat." waitingTransactionsComplete: "Fronta Transakce uzavřena." webserver: "Webserver je již vypnutý." enable: @@ -721,9 +721,9 @@ plugin: dbNotifySQLiteWAL: "SQLite WAL mód není podporován na verzi tohoto serveru, používám default. Toto může či nemusí ovlivnit výkon." dbPatchesAlreadyApplied: "Všechny databáze již jsou aktualizovány." dbPatchesApplied: "Všechny databáze byly úspěšně aktualizovány." - dbSchemaPatch: "Database: Making sure schema is up to date.." - loadedServerInfo: "Server identifier loaded: ${0}" - loadingServerInfo: "Loading server identifying information" + dbSchemaPatch: "Databáze: Zajištění aktuálnosti schématu.." + loadedServerInfo: "Načtený identifikátor serveru: ${0}" + loadingServerInfo: "Načítání identifikačních informací serveru" no: "Ne" today: "'Dnes'" unavailable: "Nedostupné" diff --git a/react/dashboard/dashboard/package.json b/react/dashboard/dashboard/package.json index 97f87efed..f256627b2 100644 --- a/react/dashboard/dashboard/package.json +++ b/react/dashboard/dashboard/package.json @@ -5,11 +5,11 @@ "private": true, "proxy": "http://localhost:8800", "dependencies": { - "@fortawesome/fontawesome-free": "^6.3.0", - "@fortawesome/fontawesome-svg-core": "^6.3.0", - "@fortawesome/free-brands-svg-icons": "^6.3.0", - "@fortawesome/free-regular-svg-icons": "^6.3.0", - "@fortawesome/free-solid-svg-icons": "^6.3.0", + "@fortawesome/fontawesome-free": "^6.4.0", + "@fortawesome/fontawesome-svg-core": "^6.4.0", + "@fortawesome/free-brands-svg-icons": "^6.4.0", + "@fortawesome/free-regular-svg-icons": "^6.4.0", + "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", "@fullcalendar/bootstrap": "^5.11.4", "@fullcalendar/daygrid": "^5.11.4", @@ -18,13 +18,13 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", - "axios": "^1.3.4", + "axios": "^1.3.5", "bootstrap": "^5.2.3", "datatables.net": "^1.13.4", "datatables.net-bs5": "^1.13.4", "datatables.net-responsive-bs5": "^2.4.1", "highcharts": "^10.3.3", - "i18next": "^22.4.13", + "i18next": "^22.4.14", "i18next-chained-backend": "^4.2.0", "i18next-http-backend": "^2.2.0", "i18next-localstorage-backend": "^4.1.0", @@ -37,9 +37,9 @@ "react-mcjsonchat": "^1.0.0", "react-router-dom": "6", "react-scripts": "5.0.1", - "sass": "^1.60.0", + "sass": "^1.61.0", "source-map-explorer": "^2.5.2", - "swagger-ui": "^4.18.1", + "swagger-ui": "^4.18.2", "web-vitals": "^3.0.2" }, "scripts": { diff --git a/react/dashboard/dashboard/src/components/accordion/Accordion.js b/react/dashboard/dashboard/src/components/accordion/Accordion.js index 0f1da80b9..9819b89ab 100644 --- a/react/dashboard/dashboard/src/components/accordion/Accordion.js +++ b/react/dashboard/dashboard/src/components/accordion/Accordion.js @@ -49,7 +49,6 @@ const Accordion = ({headers, slices, open, style}) => { } const width = headers.length; - return ( diff --git a/react/dashboard/dashboard/src/components/alert/QueryPath.js b/react/dashboard/dashboard/src/components/alert/QueryPath.js index f7b319b24..02cd896e1 100644 --- a/react/dashboard/dashboard/src/components/alert/QueryPath.js +++ b/react/dashboard/dashboard/src/components/alert/QueryPath.js @@ -48,7 +48,8 @@ const QueryPath = () => { return ( - {player.nicknames.map((nickname, i) => ( + {player.nicknames.map(nickname => ( diff --git a/react/dashboard/dashboard/src/components/cards/query/FilterDropdown.js b/react/dashboard/dashboard/src/components/cards/query/FilterDropdown.js index 4fc99c205..698792943 100644 --- a/react/dashboard/dashboard/src/components/cards/query/FilterDropdown.js +++ b/react/dashboard/dashboard/src/components/cards/query/FilterDropdown.js @@ -51,8 +51,8 @@ const FilterDropdown = ({filterOptions, filters, setFilters}) => {
{t('html.query.filters.add')}
- {filterOptions.map((option, i) => ( - addFilter(option)}> + {filterOptions.map(option => ( + addFilter(option)}> {getReadableFilterName(option)} ))} diff --git a/react/dashboard/dashboard/src/components/cards/query/FilterList.js b/react/dashboard/dashboard/src/components/cards/query/FilterList.js index bc06bb197..e26de0a4e 100644 --- a/react/dashboard/dashboard/src/components/cards/query/FilterList.js +++ b/react/dashboard/dashboard/src/components/cards/query/FilterList.js @@ -29,7 +29,7 @@ const FilterList = ({filters, setFilters, setAsInvalid, setAsValid}) => { return (
    - {filters.map((filter, i) =>
  • + {filters.map((filter, i) =>
  • updateFilterOptions(i, newOptions)} removeFilter={() => removeFilter(i)} diff --git a/react/dashboard/dashboard/src/components/cards/server/graphs/NetworkOnlineActivityGraphsCard.js b/react/dashboard/dashboard/src/components/cards/server/graphs/NetworkOnlineActivityGraphsCard.js index 616e17cef..561b7f958 100644 --- a/react/dashboard/dashboard/src/components/cards/server/graphs/NetworkOnlineActivityGraphsCard.js +++ b/react/dashboard/dashboard/src/components/cards/server/graphs/NetworkOnlineActivityGraphsCard.js @@ -10,15 +10,34 @@ import {ChartLoader} from "../../../navigation/Loader"; import TimeByTimeGraph from "../../../graphs/TimeByTimeGraph"; import PlayersOnlineGraph from "../../../graphs/PlayersOnlineGraph"; import {useMetadata} from "../../../../hooks/metadataHook"; +import StackedPlayersOnlineGraph from "../../../graphs/StackedPlayersOnlineGraph"; -const PlayersOnlineTab = () => { - const {serverUUID} = useMetadata(); +const SingleProxyPlayersOnlineGraph = ({serverUUID}) => { const {data, loadingError} = useDataRequest(fetchPlayersOnlineGraph, [serverUUID]); + if (loadingError) return + if (!serverUUID || !data) return ; + + return +} + +const MultiProxyPlayersOnlineGraph = () => { + const {data, loadingError} = useDataRequest(fetchPlayersOnlineGraph, []); + if (loadingError) return if (!data) return ; - return + return +} + +const PlayersOnlineTab = () => { + const {serverUUID, networkMetadata} = useMetadata(); + + if (networkMetadata.usingRedisBungee || networkMetadata.servers.filter(server => server.proxy).length === 1) { + return + } else { + return + } } const DayByDayTab = () => { diff --git a/react/dashboard/dashboard/src/components/cards/server/tables/PerformanceAsNumbersCard.js b/react/dashboard/dashboard/src/components/cards/server/tables/PerformanceAsNumbersCard.js index 484ce6d3d..29672cf3d 100644 --- a/react/dashboard/dashboard/src/components/cards/server/tables/PerformanceAsNumbersCard.js +++ b/react/dashboard/dashboard/src/components/cards/server/tables/PerformanceAsNumbersCard.js @@ -3,12 +3,24 @@ import PerformanceAsNumbersTable from "../../../table/PerformanceAsNumbersTable" import CardHeader from "../../CardHeader"; import {faBookOpen} from "@fortawesome/free-solid-svg-icons"; import {Card} from "react-bootstrap"; +import {useTranslation} from "react-i18next"; + +const PerformanceAsNumbersCard = ({data, servers}) => { + const {t} = useTranslation(); + const noData24h = data && "Unavailable" === data.cpu_24h; + const noData7d = data && "Unavailable" === data.cpu_7d; + const noData30d = data && "Unavailable" === data.cpu_30d; + + const noDataAlert = noData30d ?

    {t('html.description.noData30d')}

    + : (noData7d ?

    {t('html.description.noData7d')}

    + : (noData24h ?

    {t('html.description.noData24h')}

    + : '')); -const PerformanceAsNumbersCard = ({data}) => { return ( - + {noDataAlert} + ) }; diff --git a/react/dashboard/dashboard/src/components/cards/server/tables/PlayerbaseTrendsCard.js b/react/dashboard/dashboard/src/components/cards/server/tables/PlayerbaseTrendsCard.js index 57383786f..10e0cb137 100644 --- a/react/dashboard/dashboard/src/components/cards/server/tables/PlayerbaseTrendsCard.js +++ b/react/dashboard/dashboard/src/components/cards/server/tables/PlayerbaseTrendsCard.js @@ -23,28 +23,36 @@ const PlayerbaseTrendsCard = ({data}) => { headers={[t('html.label.thirtyDaysAgo'), t('html.label.now'), t('html.label.trend')]}> ]}/> + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + values={[data.afk_then, data.afk_now, + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + ]}/> ) diff --git a/react/dashboard/dashboard/src/components/cards/server/tables/ServerWeekComparisonCard.js b/react/dashboard/dashboard/src/components/cards/server/tables/ServerWeekComparisonCard.js index 8fb4e1ac6..85f542a67 100644 --- a/react/dashboard/dashboard/src/components/cards/server/tables/ServerWeekComparisonCard.js +++ b/react/dashboard/dashboard/src/components/cards/server/tables/ServerWeekComparisonCard.js @@ -22,30 +22,43 @@ const ServerWeekComparisonCard = ({data}) => { ]}/> + values={[data.unique_before, data.unique_after, + ]}/> ]}/> + values={[data.new_before, data.new_after, + ]}/> ]}/> + values={[data.regular_before, data.regular_after, + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + ]}/> ]}/> + values={[data.deaths_before, data.deaths_after, + ]}/> ) diff --git a/react/dashboard/dashboard/src/components/cards/server/values/ServerAsNumbersCard.js b/react/dashboard/dashboard/src/components/cards/server/values/ServerAsNumbersCard.js index 1b2b26946..79fdac2a3 100644 --- a/react/dashboard/dashboard/src/components/cards/server/values/ServerAsNumbersCard.js +++ b/react/dashboard/dashboard/src/components/cards/server/values/ServerAsNumbersCard.js @@ -15,17 +15,21 @@ import {faCalendarCheck, faClock} from "@fortawesome/free-regular-svg-icons"; import React from "react"; import {CardLoader} from "../../../navigation/Loader"; import ExtendableCardBody from "../../../layout/extension/ExtendableCardBody"; +import {useMetadata} from "../../../../hooks/metadataHook"; const ServerAsNumbersCard = ({data}) => { const {t} = useTranslation(); + const {networkMetadata} = useMetadata(); - if (!data) return ; + if (!data || !networkMetadata) return ; + const isGameServer = data.player_kills !== undefined; + const showPeaks = isGameServer || networkMetadata.usingRedisBungee || networkMetadata.servers.filter(server => server.proxy).length === 1; return (
    - {data.player_kills !== undefined ? t('html.label.serverAsNumberse') : t('html.label.networkAsNumbers')} + {isGameServer ? t('html.label.serverAsNumberse') : t('html.label.networkAsNumbers')}
    { -
    - - + {showPeaks && <> +
    + + + }
    {
      {extension.onlyGenericTab ? '' : - extension.tabs.map((tab, i) =>
    • + extension.tabs.map((tab, i) =>
{nickname.server} {nickname.date}
{groups.length ? groups.map((group, i) => - ) : diff --git a/react/dashboard/dashboard/src/components/table/PerformanceAsNumbersTable.js b/react/dashboard/dashboard/src/components/table/PerformanceAsNumbersTable.js index 82bd065da..7fedd0ad6 100644 --- a/react/dashboard/dashboard/src/components/table/PerformanceAsNumbersTable.js +++ b/react/dashboard/dashboard/src/components/table/PerformanceAsNumbersTable.js @@ -12,14 +12,20 @@ import { import React from "react"; import {TableRow} from "./TableRow"; import {FontAwesomeIcon as Fa} from "@fortawesome/react-fontawesome"; -import {faEye} from "@fortawesome/free-regular-svg-icons"; +import {faEye, faQuestionCircle} from "@fortawesome/free-regular-svg-icons"; import AsNumbersTable from "./AsNumbersTable"; import {ChartLoader} from "../navigation/Loader"; -const PerformanceAsNumbersTable = ({data}) => { +const PerformanceAsNumbersTable = ({data, servers}) => { const {t} = useTranslation(); if (!data) return ; + const dataIncludesGameServers = servers && Boolean(servers.filter(server => !server.proxy).length); + const noTPSOnProxies = !servers || dataIncludesGameServers + ? '' + : ; + return ( { ]}/> {data.tps_30d} {noTPSOnProxies}, + <>{data.tps_7d} {noTPSOnProxies}, + <>{data.tps_24h} {noTPSOnProxies} ]}/> { ]}/> {data.entities_30d} {noTPSOnProxies}, + <>{data.entities_7d} {noTPSOnProxies}, + <>{data.entities_24h} {noTPSOnProxies} ]}/> {t('html.label.averageChunks')}{' '}{data.chunks_30d === 'Unavailable' ? : ''}} values={[ - data.chunks_30d, - data.chunks_7d, - data.chunks_24h + <>{data.chunks_30d} {noTPSOnProxies}, + <>{data.chunks_7d} {noTPSOnProxies}, + <>{data.chunks_24h} {noTPSOnProxies} ]}/> { const {t} = useTranslation(); + + const timeUtc = Date.now(); + const dayMs = 86400000 + + let noDataWarning = ''; + if (!server.playersOnline.length) { + noDataWarning = <>  + } else if (timeUtc - server.playersOnline[server.playersOnline.length - 1][0] > dayMs) { + noDataWarning = <>  dayMs * 7 ? '' : "col-deep-orange"} + title={t('html.description.noData24h')}/> + } + return ( - + - {sortedServers.length ? sortedServers.map((server, i) => onSelect(servers.indexOf(server))}/>) : + {sortedServers.length ? sortedServers.map(server => onSelect(servers.indexOf(server))}/>) : diff --git a/react/dashboard/dashboard/src/hooks/authenticationHook.js b/react/dashboard/dashboard/src/hooks/authenticationHook.js index 323e2b14c..a15dae0d0 100644 --- a/react/dashboard/dashboard/src/hooks/authenticationHook.js +++ b/react/dashboard/dashboard/src/hooks/authenticationHook.js @@ -1,4 +1,4 @@ -import {createContext, useCallback, useContext, useEffect, useState} from "react"; +import {createContext, useCallback, useContext, useEffect, useMemo, useState} from "react"; import {fetchWhoAmI} from "../service/authenticationService"; const AuthenticationContext = createContext({}); @@ -35,7 +35,18 @@ export const AuthenticationContextProvider = ({children}) => { updateLoginDetails(); }, [updateLoginDetails]); - const sharedState = { + const sharedState = useMemo(() => { + return { + authLoaded, + authRequired, + loggedIn, + user, + loginError, + hasPermission, + hasPermissionOtherThan, + updateLoginDetails + } + }, [ authLoaded, authRequired, loggedIn, @@ -44,7 +55,7 @@ export const AuthenticationContextProvider = ({children}) => { hasPermission, hasPermissionOtherThan, updateLoginDetails - } + ]) return ( {children} diff --git a/react/dashboard/dashboard/src/hooks/serverExtensionDataContext.js b/react/dashboard/dashboard/src/hooks/serverExtensionDataContext.js index d69ca681c..9c4996926 100644 --- a/react/dashboard/dashboard/src/hooks/serverExtensionDataContext.js +++ b/react/dashboard/dashboard/src/hooks/serverExtensionDataContext.js @@ -1,4 +1,4 @@ -import {createContext, useContext, useEffect, useState} from "react"; +import {createContext, useContext, useEffect, useMemo, useState} from "react"; import {useDataRequest} from "./dataFetchHook"; import {fetchExtensionData} from "../service/serverService"; @@ -15,7 +15,9 @@ export const ServerExtensionContextProvider = ({identifier, children}) => { setExtensionDataLoadingError(loadingError); }, [data, loadingError, setExtensionData, setExtensionDataLoadingError]) - const sharedState = {extensionData, extensionDataLoadingError} + const sharedState = useMemo(() => { + return {extensionData, extensionDataLoadingError}; + }, [extensionData, extensionDataLoadingError]); return ( {children} diff --git a/react/dashboard/dashboard/src/service/serverService.js b/react/dashboard/dashboard/src/service/serverService.js index 9c7820933..b7637eec3 100644 --- a/react/dashboard/dashboard/src/service/serverService.js +++ b/react/dashboard/dashboard/src/service/serverService.js @@ -114,8 +114,8 @@ const fetchPlayersOnlineGraphServer = async (timestamp, identifier) => { } const fetchPlayersOnlineGraphNetwork = async (timestamp) => { - let url = `/v1/graph?type=playersOnline`; - if (staticSite) url = `/data/graph-playersOnline.json`; + let url = `/v1/graph?type=playersOnlineProxies`; + if (staticSite) url = `/data/graph-playersOnlineProxies.json`; return doGetRequest(url, timestamp); } diff --git a/react/dashboard/dashboard/src/style/sb-admin-2.css b/react/dashboard/dashboard/src/style/sb-admin-2.css index 069b87724..cec264409 100644 --- a/react/dashboard/dashboard/src/style/sb-admin-2.css +++ b/react/dashboard/dashboard/src/style/sb-admin-2.css @@ -2187,7 +2187,7 @@ a.text-dark:hover, a.text-dark:focus { border: 0; font-weight: 900; content: '\f105'; - font-family: 'Font Awesome 5 Free'; + font-family: 'Font Awesome 5 Free', sans-serif; } .sidebar .nav-item.dropdown.show .dropdown-toggle::after, @@ -2471,7 +2471,7 @@ a.text-dark:hover, a.text-dark:focus { .sidebar #sidebarToggle::after { font-weight: 900; content: '\f104'; - font-family: 'Font Awesome 5 Free'; + font-family: 'Font Awesome 5 Free', sans-serif; margin-right: 0.1rem; } @@ -2490,7 +2490,7 @@ a.text-dark:hover, a.text-dark:focus { .sidebar.toggled #sidebarToggle::after { content: '\f105'; - font-family: 'Font Awesome 5 Free'; + font-family: 'Font Awesome 5 Free', sans-serif; margin-left: 0.25rem; } @@ -2611,7 +2611,7 @@ a.text-dark:hover, a.text-dark:focus { border: 0; font-weight: 900; content: '\f107'; - font-family: 'Font Awesome 5 Free'; + font-family: 'Font Awesome 5 Free', sans-serif; } .sidebar .nav-item .nav-link[data-bs-toggle="collapse"].collapsed::after { @@ -2892,7 +2892,7 @@ a.text-dark:hover, a.text-dark:focus { line-height: 51px; font-weight: 900; content: '\f107'; - font-family: 'Font Awesome 5 Free'; + font-family: 'Font Awesome 5 Free', sans-serif; color: #d1d3e2; } diff --git a/react/dashboard/dashboard/src/util/colors.js b/react/dashboard/dashboard/src/util/colors.js index 2e34b60a6..462ec8ef6 100644 --- a/react/dashboard/dashboard/src/util/colors.js +++ b/react/dashboard/dashboard/src/util/colors.js @@ -123,9 +123,31 @@ export const colorClassToBgClass = colorClass => { return "bg-" + colorClassToColorName(colorClass); } +export const hsxStringToArray = (hsvString) => { + const color = hsvString.substring(4, hsvString.length - 1); + const split = color.split(','); + const h = Number(split[0]); + const s = Number(split[1].substring(0, split[1].length - 1)); + const x = Number(split[2].substring(0, split[2].length - 1)); + return [h, s, x]; +} + +export const hslToHsv = ([h, s, l]) => { + const hsv1 = s * (l < 50 ? l : 100 - l) / 100; + const hsvS = hsv1 === 0 ? 0 : 2 * hsv1 / (l + hsv1) * 100; + const hsvV = l + hsv1; + return [h, hsvS, hsvV]; +} + export const hsvToRgb = ([h, s, v]) => { let r, g, b; + if (s > 1) { + h = h / 360; + s = s / 100; + v = v / 100; + } + const i = Math.floor(h * 6); const f = h * 6 - i; const p = v * (1 - s); @@ -186,15 +208,15 @@ const rgbToHex = (component) => { return Math.floor(component).toString(16).padStart(2, '0'); } -// From https://stackoverflow.com/a/3732187 -export const withReducedSaturation = hex => { - const saturationReduction = 0.70; - // To RGB - let r = parseInt(hex.substr(1, 2), 16); // Grab the hex representation of red (chars 1-2) and convert to decimal (base 10). - let g = parseInt(hex.substr(3, 2), 16); - let b = parseInt(hex.substr(5, 2), 16); +export const hexToRgb = (hexString) => { + const r = parseInt(hexString.substring(1, 3), 16); + const g = parseInt(hexString.substring(3, 5), 16); + const b = parseInt(hexString.substring(5, 7), 16); + return [r, g, b]; +} - // To HSL +// https://css-tricks.com/converting-color-spaces-in-javascript/ +export const rgbToHsl = ([r, g, b]) => { r /= 255; g /= 255; b /= 255; @@ -222,6 +244,15 @@ export const withReducedSaturation = hex => { } h /= 6; } + return [h, s, l]; +} + +// From https://stackoverflow.com/a/3732187 +export const withReducedSaturation = (hex, reduceSaturationPercentage) => { + const saturationReduction = reduceSaturationPercentage ? reduceSaturationPercentage : 0.70; + + const rgb = hexToRgb(hex); + const [h, s, l] = rgbToHsl(rgb); // To css property return 'hsl(' + h * 360 + ',' + s * 100 * saturationReduction + '%,' + l * 95 + '%)'; diff --git a/react/dashboard/dashboard/src/views/layout/LoginPage.js b/react/dashboard/dashboard/src/views/layout/LoginPage.js index 10dec63f6..736aaf9a9 100644 --- a/react/dashboard/dashboard/src/views/layout/LoginPage.js +++ b/react/dashboard/dashboard/src/views/layout/LoginPage.js @@ -146,6 +146,32 @@ const LoginPage = () => { } }, [setRedirectTo, setSuccessMessage, t]) + const redirectAfterLogin = () => { + if (redirectTo && !redirectTo.startsWith('http') && !redirectTo.startsWith('file') && !redirectTo.startsWith('javascript')) { + // Normalize the URL so that it can't redirect to different domain. + try { + const redirectUrl = new URL( + redirectTo.substring(redirectTo.indexOf('/')) + (window.location.hash ? window.location.hash : ''), + window.location.protocol + '//' + window.location.host + ); + if (redirectUrl.pathname.includes("//")) { + // Invalid redirect URL, something fishy might be going on, redirect to / + navigate('/'); + } else { + navigate( + redirectUrl.pathname + redirectUrl.search + redirectUrl.hash + ); + } + } catch (e) { + console.warn(e); + // Invalid redirect URL, something fishy might be going on, redirect to / + navigate('/'); + } + } else { + navigate('/'); + } + }; + const login = async (username, password) => { if (!username || username.length < 1) { return setFailMessage(t('html.register.error.noUsername')); @@ -168,11 +194,7 @@ const LoginPage = () => { } } else if (data && data.success) { await updateLoginDetails(); - if (redirectTo && !redirectTo.startsWith('http') && !redirectTo.startsWith('file') && !redirectTo.startsWith('javascript')) { - navigate(redirectTo.substring(redirectTo.indexOf('/')) + (window.location.hash ? window.location.hash : '')); - } else { - navigate('/'); - } + redirectAfterLogin(); } else { setFailMessage(t('html.login.failed') + data ? data.error : t('generic.noData')); } diff --git a/react/dashboard/dashboard/src/views/layout/NetworkPage.js b/react/dashboard/dashboard/src/views/layout/NetworkPage.js index 2729fc37f..d291e16ae 100644 --- a/react/dashboard/dashboard/src/views/layout/NetworkPage.js +++ b/react/dashboard/dashboard/src/views/layout/NetworkPage.js @@ -117,7 +117,7 @@ const NetworkSidebar = () => { ) } -const ServerPage = () => { +const NetworkPage = () => { const {networkName, serverUUID} = useMetadata(); const {currentTab} = useNavigation(); @@ -150,4 +150,4 @@ const ServerPage = () => { ) } -export default ServerPage; \ No newline at end of file +export default NetworkPage; \ No newline at end of file diff --git a/react/dashboard/dashboard/src/views/layout/PlayerPage.js b/react/dashboard/dashboard/src/views/layout/PlayerPage.js index 6cd640b6b..1991f9672 100644 --- a/react/dashboard/dashboard/src/views/layout/PlayerPage.js +++ b/react/dashboard/dashboard/src/views/layout/PlayerPage.js @@ -10,6 +10,8 @@ import {useTranslation} from "react-i18next"; import {faCalendarCheck} from "@fortawesome/free-regular-svg-icons"; import {useDataRequest} from "../../hooks/dataFetchHook"; import ErrorPage from "./ErrorPage"; +import {useAuth} from "../../hooks/authenticationHook"; +import MainPageRedirect from "../../components/navigation/MainPageRedirect"; const HelpModal = React.lazy(() => import("../../components/modal/HelpModal")); @@ -47,6 +49,8 @@ const PlayerPage = () => { finishUpdate(player.timestamp, player.timestamp_f); }, [player, t, i18n, finishUpdate, setSidebarItems]) + const {authRequired, loggedIn} = useAuth(); + if (authRequired && !loggedIn) return ; if (loadingError) return ; return player ? ( diff --git a/react/dashboard/dashboard/src/views/layout/PlayersPage.js b/react/dashboard/dashboard/src/views/layout/PlayersPage.js index 1c3a41dbf..89dae90be 100644 --- a/react/dashboard/dashboard/src/views/layout/PlayersPage.js +++ b/react/dashboard/dashboard/src/views/layout/PlayersPage.js @@ -9,6 +9,8 @@ import ColorSelectorModal from "../../components/modal/ColorSelectorModal"; import {useMetadata} from "../../hooks/metadataHook"; import ErrorPage from "./ErrorPage"; import {staticSite} from "../../service/backendConfiguration"; +import {useAuth} from "../../hooks/authenticationHook"; +import MainPageRedirect from "../../components/navigation/MainPageRedirect"; const HelpModal = React.lazy(() => import("../../components/modal/HelpModal")); @@ -30,6 +32,8 @@ const PlayersPage = () => { setCurrentTab('html.label.players') }, [t, i18n, setCurrentTab, setSidebarItems]) + const {authRequired, loggedIn} = useAuth(); + if (authRequired && !loggedIn) return ; if (error) return ; const displayedServerName = isProxy ? networkName : (serverName && serverName.startsWith('Server') ? "Plan" : serverName); diff --git a/react/dashboard/dashboard/src/views/layout/QueryPage.js b/react/dashboard/dashboard/src/views/layout/QueryPage.js index 2bb85799a..de5c90955 100644 --- a/react/dashboard/dashboard/src/views/layout/QueryPage.js +++ b/react/dashboard/dashboard/src/views/layout/QueryPage.js @@ -9,6 +9,8 @@ import ColorSelectorModal from "../../components/modal/ColorSelectorModal"; import {useMetadata} from "../../hooks/metadataHook"; import ErrorPage from "./ErrorPage"; import {QueryResultContextProvider} from "../../hooks/queryResultContext"; +import {useAuth} from "../../hooks/authenticationHook"; +import MainPageRedirect from "../../components/navigation/MainPageRedirect"; const QueryPage = () => { const {t, i18n} = useTranslation(); @@ -30,6 +32,8 @@ const QueryPage = () => { setCurrentTab('html.query.title.text'); }, [t, i18n, setCurrentTab, setSidebarItems]) + const {authRequired, loggedIn} = useAuth(); + if (authRequired && !loggedIn) return ; if (error) return ; const displayedServerName = isProxy ? networkName : (serverName && serverName.startsWith('Server') ? "Plan" : serverName); diff --git a/react/dashboard/dashboard/src/views/network/NetworkPerformance.js b/react/dashboard/dashboard/src/views/network/NetworkPerformance.js index 7c6b13ff4..d6fb6d957 100644 --- a/react/dashboard/dashboard/src/views/network/NetworkPerformance.js +++ b/react/dashboard/dashboard/src/views/network/NetworkPerformance.js @@ -23,7 +23,7 @@ const NetworkPerformance = () => { const [selectedOptions, setSelectedOptions] = useState([]); const [visualizedServers, setVisualizedServers] = useState([]); - const initializeServerOptions = () => { + useEffect(() => { if (networkMetadata) { const options = networkMetadata.servers; setServerOptions(options); @@ -34,8 +34,7 @@ const NetworkPerformance = () => { setSelectedOptions([indexOfProxy]); setVisualizedServers([indexOfProxy]); } - }; - useEffect(initializeServerOptions, [networkMetadata, setVisualizedServers]); + }, [networkMetadata, setVisualizedServers]); const applySelected = () => { setVisualizedServers(selectedOptions); @@ -85,7 +84,8 @@ const NetworkPerformance = () => { loadPerformanceData(); }, [loadPerformanceData, visualizedServers, updateRequested]); - const isUpToDate = visualizedServers.every((s, i) => s === selectedOptions[i]); + const isUpToDate = selectedOptions.length === visualizedServers.length && selectedOptions.every( + (s, i) => s === visualizedServers[i]); return (
@@ -96,7 +96,8 @@ const NetworkPerformance = () => {
- + @@ -104,7 +105,8 @@ const NetworkPerformance = () => { server.serverName)} selectedIndexes={selectedOptions} setSelectedIndexes={setSelectedOptions}/> - diff --git a/react/dashboard/dashboard/src/views/player/PlayerOverview.js b/react/dashboard/dashboard/src/views/player/PlayerOverview.js index 56e2ecbd9..cc4b38d8a 100644 --- a/react/dashboard/dashboard/src/views/player/PlayerOverview.js +++ b/react/dashboard/dashboard/src/views/player/PlayerOverview.js @@ -34,7 +34,7 @@ const ConnectionsCard = ({player}) => { - {player.connections.map((connection, i) => ( + {player.connections.map((connection, i) => ())} diff --git a/react/dashboard/dashboard/yarn.lock b/react/dashboard/dashboard/yarn.lock index 71f1bc96d..d283107fd 100644 --- a/react/dashboard/dashboard/yarn.lock +++ b/react/dashboard/dashboard/yarn.lock @@ -1151,43 +1151,43 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@fortawesome/fontawesome-common-types@6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz#51f734e64511dbc3674cd347044d02f4dd26e86b" - integrity sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg== +"@fortawesome/fontawesome-common-types@6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz#88da2b70d6ca18aaa6ed3687832e11f39e80624b" + integrity sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ== -"@fortawesome/fontawesome-free@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.3.0.tgz#b5877182692a6f7a39d1108837bec24247ba4bd7" - integrity sha512-qVtd5i1Cc7cdrqnTWqTObKQHjPWAiRwjUPaXObaeNPcy7+WKxJumGBx66rfSFgK6LNpIasVKkEgW8oyf0tmPLA== +"@fortawesome/fontawesome-free@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz#1ee0c174e472c84b23cb46c995154dc383e3b4fe" + integrity sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ== -"@fortawesome/fontawesome-svg-core@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz#b6a17d48d231ac1fad93e43fca7271676bf316cf" - integrity sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw== +"@fortawesome/fontawesome-svg-core@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz#3727552eff9179506e9203d72feb5b1063c11a21" + integrity sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw== dependencies: - "@fortawesome/fontawesome-common-types" "6.3.0" + "@fortawesome/fontawesome-common-types" "6.4.0" -"@fortawesome/free-brands-svg-icons@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.3.0.tgz#436e5fcba4f4f0902edcceaec5c4ff887ba7328f" - integrity sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w== +"@fortawesome/free-brands-svg-icons@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.0.tgz#c785cf5563231eadc5ef5f8cd0274e0b8920433f" + integrity sha512-qvxTCo0FQ5k2N+VCXb/PZQ+QMhqRVM4OORiO6MXdG6bKolIojGU/srQ1ptvKk0JTbRgaJOfL2qMqGvBEZG7Z6g== dependencies: - "@fortawesome/fontawesome-common-types" "6.3.0" + "@fortawesome/fontawesome-common-types" "6.4.0" -"@fortawesome/free-regular-svg-icons@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.3.0.tgz#286f87f777e6c96af59151e86647c81083029ee2" - integrity sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg== +"@fortawesome/free-regular-svg-icons@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz#cacc53bd8d832d46feead412d9ea9ce80a55e13a" + integrity sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw== dependencies: - "@fortawesome/fontawesome-common-types" "6.3.0" + "@fortawesome/fontawesome-common-types" "6.4.0" -"@fortawesome/free-solid-svg-icons@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.3.0.tgz#d3bd33ae18bb15fdfc3ca136e2fea05f32768a65" - integrity sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA== +"@fortawesome/free-solid-svg-icons@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz#48c0e790847fa56299e2f26b82b39663b8ad7119" + integrity sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ== dependencies: - "@fortawesome/fontawesome-common-types" "6.3.0" + "@fortawesome/fontawesome-common-types" "6.4.0" "@fortawesome/react-fontawesome@^0.2.0": version "0.2.0" @@ -1532,10 +1532,10 @@ dependencies: "@swc/helpers" "^0.4.14" -"@remix-run/router@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.3.0.tgz#b6ee542c7f087b73b3d8215b9bf799f648be71cb" - integrity sha512-nwQoYb3m4DDpHTeOwpJEuDt8lWVcujhYYSFGLluC+9es2PyLjm+jjq3IeRBQbwBtPLJE/lkuHuGHr8uQLgmJRA== +"@remix-run/router@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.5.0.tgz#57618e57942a5f0131374a9fdb0167e25a117fdc" + integrity sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg== "@restart/hooks@^0.4.6", "@restart/hooks@^0.4.7": version "0.4.8" @@ -1740,10 +1740,10 @@ stampit "=4.3.2" unraw "=2.0.1" -"@swagger-api/apidom-core@=0.69.0", "@swagger-api/apidom-core@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-0.69.0.tgz#561ffd097f74ed60b3e6c51a8815dca8ff9c6ae2" - integrity sha512-n59Mz6JjgL5SJHne7om22+5RRfDNmM8oQ0NgHvWU44rHcmA/8Byxs28w6Ke2xgJFmLYasEw6hx1bwAATBLaa7w== +"@swagger-api/apidom-core@>=0.69.1 <1.0.0", "@swagger-api/apidom-core@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-0.69.1.tgz#ac92066ea43149b4fb6305fecbf737022ed31e30" + integrity sha512-XkGEoIuk0cqsbzv03AdfcDr5suKJnLC+CkZS4rzHjs307RFG1xX722Aj6snUs5hRFQKBH+cdujpspugh7HdNmw== dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.69.0" @@ -1754,167 +1754,167 @@ short-unique-id "=4.4.4" stampit "=4.3.2" -"@swagger-api/apidom-json-pointer@=0.69.0", "@swagger-api/apidom-json-pointer@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.69.0.tgz#c892d358e9d8a1cfb4df1ded793ff5d145df4903" - integrity sha512-TDcrES6POTBrQXDdq7VjlqFYZuZ/eqaxD9K2MUJcRckil+jxpDV0W38lgXE+c8Gjwvqqqce/izkilUgMA+ajFA== +"@swagger-api/apidom-json-pointer@>=0.69.1 <1.0.0", "@swagger-api/apidom-json-pointer@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.69.1.tgz#4a9de62c27007fec87b116784c835566bd0566a5" + integrity sha512-bRSSpSdXVQQ0LTmdY/KDZ7XqxwMf1DmgOqStFq71A8UZs1cTAa83qQ7+OAPqz3/qhSVAOE1sIU5fc32j+wqtmg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-ns-api-design-systems@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.69.0.tgz#10159ea66db921b93939a6705a5e3f043f0fbddd" - integrity sha512-1W5N4wL5I9n4dD6AJ1Bh49kphn+DXmwggUQhwsq7phxey4jiEXUNC9W/CQDXJp0wkFtNE6REn8yks9QGqfkemw== +"@swagger-api/apidom-ns-api-design-systems@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.69.1.tgz#8b6c399f3155a787196e0a386fb95472d9eb93a7" + integrity sha512-whGQcBNhH8O/xEOuCRnhVZik+zvXGy4915sy/8zZNy792Q2GjwUIduc1iez2oXdg77NYOhBENLndXIGbNpxeuQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-1" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-asyncapi-2@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.69.0.tgz#098a9964518f609c73dedcb8dbdd8b657a8b4a07" - integrity sha512-D49mduzDwVQJp55+KoT8NozQEUsLMhCxbAnD4iY1E/v4uK7xSqQ3JW/Luunz6DNKWWtcWhgCiehmBwIjVAQN/A== +"@swagger-api/apidom-ns-asyncapi-2@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.69.1.tgz#d1fe408b1467e8d8f4011227e16de7555cf30fba" + integrity sha512-9lrMtcA0Vs9nZsZO67BPqorbQ3KGwYecXwo+2a+8ev8MqdG7eOKB9taRgt7CPdfNEllRvc3nC9A/IHOOtoefsA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-json-schema-draft-7" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-json-schema-draft-7" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-json-schema-draft-4@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.69.0.tgz#136224aee085aeef3394bc93129a88b984edfa4b" - integrity sha512-rRo226jITgG6DZNuk1oCuKFhr0giJ6GATyQtaaEmH9bhxB8i1eeES/LolJfo4donyejCb+imJN+L1fQ1N2YOYA== +"@swagger-api/apidom-ns-json-schema-draft-4@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.69.1.tgz#4d26559924fd9ca024704055652cbb4cbd7fbc29" + integrity sha512-6qkUH0R2C2dxzr5Af1p4N/ccyH34Fnv9CVT4tIPFThmxLI+Ivdzy6BbZ4lT9rzFet1G0mL3hI/pdLNz8Z28Ftw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-json-schema-draft-6@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.69.0.tgz#6986e24542505cde90bd2c2366f1c1678624c666" - integrity sha512-koLHh4TS3RtrWxcYX/tZobgnwUbjiFLOESiqe0FYvs82LXNwr+dveM8Umj89ACjpCd0Pq2J+5yvfNyvuIa6WFw== +"@swagger-api/apidom-ns-json-schema-draft-6@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.69.1.tgz#f6a7253844a402ffc4587a1593792f4737451f0a" + integrity sha512-yTMGfqQ5JXvdVnAjlr7qdPqfBJWaL3VrXPXnp5uLwW1Wk5aMzie1Jq9jZARomajFhNKAzFTDuaZ+S+jEeqQ09Q== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-json-schema-draft-4" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-json-schema-draft-4" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-json-schema-draft-7@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.69.0.tgz#5ea3a07aefb5b12022614d3f4bb0a42e19bd68ce" - integrity sha512-OaEBBrgoDfqMPnZ0NCfg5HUJJ/V6XJ1AZ6OTW1AfJTqErLxYTgdNv52lYXKLiKkyLiH5olBBnPEKPPLg+DwUKQ== +"@swagger-api/apidom-ns-json-schema-draft-7@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.69.1.tgz#217a3fd1e0b8faa1859e2427d85d054006ec464b" + integrity sha512-Etl8J2jwJzm2r5fFu7csRmI9im8qTgcNeCbfqpEWLmVM4SirZx56VathplSt/XyApP2vXNH9sUHCa7crgJH/hQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-json-schema-draft-6" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-json-schema-draft-6" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-openapi-3-0@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.69.0.tgz#1cc54093e6f5919f53d8681dd54c9e1931295c1b" - integrity sha512-rKgEd/k0MNV93DhwZ6yfUaIjbs6RfS9xB3QN9M6Lx5ZJktxNGAdpS/c3WEb5jBOpkQIJ6MaNI67Q0ZHHJTlrng== +"@swagger-api/apidom-ns-openapi-3-0@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.69.1.tgz#eccff9a2f9ff774cb2ee8f550ab3803f8ade4a4f" + integrity sha512-WysPvllkS36ONiDWUTfNACkgpoDNibCT8sOGaEv+NTGlUjhZuyI6GMJxw5DcaeRyIV5Tp14vyCCbacGMr+02WQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-json-schema-draft-4" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-json-schema-draft-4" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-ns-openapi-3-1@=0.69.0", "@swagger-api/apidom-ns-openapi-3-1@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.69.0.tgz#3bae54d8298aab9f7f04ed0c2f984c5d96ac5fa0" - integrity sha512-l5g4K09I4znwTcXbkBaE4JKmvEQ7Q831hzpBWZimcnUGrC8/nJ7eYUc04bjgbdDZd37B0zEzRn6w92ax7Hi2Fg== +"@swagger-api/apidom-ns-openapi-3-1@>=0.69.1 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.69.1.tgz#0f38d7a303c028a0914b802fe22ddae672111819" + integrity sha512-chk+UF8soH5TuvabUstPmb1Mx3IP3dUJQ7SDB3tHusg+f2xEo5S7Hx/mrSKJDX2Wp0qFshqpUFSRC8ZUnFgJaQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-0" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" -"@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.69.0.tgz#173b3b1b37711c10bb6c8f20638f323fc56cd5e7" - integrity sha512-oi52u6rmLrE+iXOk5wlx1NRXHd0NtGsxF1G+g2JTtC0oh5ETrj5fMGwMQwcBqYGTj3Y6vPJMkvVyaC46KUKg0Q== +"@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.69.1.tgz#4faa17655f09e2a5a5cce5327e14629810ef2d87" + integrity sha512-+xGcnM4bwGylAtp6i4rN/YRs03665Xzp53mPvx3s3vLm1y2FuaFdyro0zwjwbNdpoHu5DOsxcCHRgeX0Z8Uv9Q== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-api-design-systems" "^0.69.0" - "@swagger-api/apidom-parser-adapter-json" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-api-design-systems" "^0.69.1" + "@swagger-api/apidom-parser-adapter-json" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.69.0.tgz#10b89dff03f1756249318e46ffb2de0dada77060" - integrity sha512-bqgf+iHK3qrANJ5zrQJ+BoWrIftL4YhCfZyE/aWwnGW1BKdB4uGC94rx9DHhS8ZfNPz7AnW+ki6ISXpYOD8uyw== +"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.69.1.tgz#3d0c7332ffbf39345acb2e0d3fab8b5b6d5170a1" + integrity sha512-XDH6u9MxoRKUuwWP2SxUK3aXgkFryI85IYwElRb6Utj1ndKowC1go58bCry0jBaIj1cdZREe8hZxaiuqKTSnwg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-api-design-systems" "^0.69.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-api-design-systems" "^0.69.1" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.69.0.tgz#b54bd05c8f182993481572e85c05bcc5565e1599" - integrity sha512-3b1nGsbFh6DAUDB9plQE5iyqOE37DZS/X34Hr+5ENiq7DFA/19UYeUSJQfU+kWjtFzRDHBRluPo38nHdGnh4gg== +"@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.69.1.tgz#393fd221a4a5c1f25e4df7f97b75c296801168c5" + integrity sha512-OvyCA9HMk2AZqjVqguANzGB1FEzHSGOqrtXql99JLxzwcxo8euDdfwQ7dZURxTvM/XwPmAeVZkgChhicidn5uQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.69.0" - "@swagger-api/apidom-parser-adapter-json" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-asyncapi-2" "^0.69.1" + "@swagger-api/apidom-parser-adapter-json" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.69.0.tgz#a955c9894d4b030cd74172cb0238dbd8f01c4ff5" - integrity sha512-JEuZw04wdtbn1WFkavB9Yn8MNAWtfUdlD6naa/Z4CL0iUOhC5BzG9dUfe6gn+Z+xtFRHm3MHMh9B6Xdr3MWDBg== +"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.69.1.tgz#a304e8161ce3048348f57f70b08e803a52189395" + integrity sha512-wb1Ys1n2q8DFYDbUrFNex/+57D2I9QFdY6L/vV7skrIUafYxPmN9LPpB3TQ8cpEAwvgkRvzUI3B7rHrvA5d1QA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.69.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-asyncapi-2" "^0.69.1" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-json@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.69.0.tgz#1781852210b585c9bfc0c4923e2fba2d4f6d425a" - integrity sha512-wNSYD9FU31aSBnCCp3Nt2ZZVAdu1LGGWmlLKmcOx7SXi79F1E+T6RtqyoLa0VBGKPVEwDtaH8kWRsZzXpUZVvQ== +"@swagger-api/apidom-parser-adapter-json@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.69.1.tgz#9faa085c822ed321795e7ddeb5cca217f4cd4e95" + integrity sha512-YSLdRE0QJ05OnGvXVViQNmdPraY0oqGVsatID+nxB6vBmFJVh7nFeEqQc3wEK/6sMWu8qeKhF2UfgPKBilpNsA== dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.69.0" - "@swagger-api/apidom-core" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" @@ -1923,66 +1923,66 @@ tree-sitter-json "=0.20.0" web-tree-sitter "=0.20.7" -"@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.69.0.tgz#ebec1c17a2309d73a82b4f89c7c54fe8172e97d6" - integrity sha512-aSNFJ4he67c5Vz9+FbKKnJzy9JdmSDqzeog8CTiLI8TFrCvj9KQns68NbemyxHHc7uH9TcOwXq3WbXgXSWv60A== +"@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.69.1.tgz#d845affd3119310d55b7a03f453b323b02d4d2ec" + integrity sha512-QHIVhrcc+1ktICZh3hMU9mgiJQ4h+iN9WiG4MVAlWqSvv1fbpZWb0rmhPbdP6pLw20NEVPT0L7Mi9gVB7HOX1A== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.69.0" - "@swagger-api/apidom-parser-adapter-json" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-0" "^0.69.1" + "@swagger-api/apidom-parser-adapter-json" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.69.0.tgz#3591798572c5e9eed91bbb7703364d925b53b08d" - integrity sha512-7TCnTTKMVTyDiX7MKhphmqUaoKtWLOgKCaPEtBRFgd94yOkobWBKw7yG6G+0rdsCIb4Q9AFcL39eUDh5yI45/w== +"@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.69.1.tgz#077cb4b96dca5eda18d705c3d190a0073fb6e6ac" + integrity sha512-I6nMgW2jnet4PDDlN3jzKPMvTiVS1SryqWsYmaxijiyLLtR0YWm9ykFAkNevsCQvsCGdm+ag018rONTqpEURRQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.69.0" - "@swagger-api/apidom-parser-adapter-json" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-1" "^0.69.1" + "@swagger-api/apidom-parser-adapter-json" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.69.0.tgz#eea33e6c10fc6bb4806bdf4cbdd1026af4b7fac8" - integrity sha512-mrKLsNMsJr5Z4cUDO4v5vt59uGGWfLL36hTuSKcqO9IH/3nziPrYJ7Kd4VdiJaQYqFuUQCEG7A2pOZfkpbR1KA== +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.69.1.tgz#6843cac67d721111188a12fad62bc6538a72b8f6" + integrity sha512-mc1DYPMAKUNj0Fn4EA30MFu/n6np4MkYBn8eNS5dGPIjP4EbrphmGWkwMa250a9rjGNM4iww5bWWWiajMAU5bA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.69.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-0" "^0.69.1" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.69.0.tgz#1a139e8bfdab774354b1dc5598e9e04c063174b9" - integrity sha512-tEyNhlGoQ7/CnC0K3NqBWfhi90U+5fFDl7Z2PyV/+fRG1F0okAoHwp9+Q3/BieWdiZ5OChX8yxwOdq1kJ2+TTQ== +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.69.1.tgz#1773c48215b03699bf38c3a461e19f96a74c8575" + integrity sha512-FjDD9JOrdCOr+K75PAje6CD9F4kr52xXabXoTG8fwJz1LfiZSVj5rCde1DU7NNkI0JQc1t/nJyFTz4pz0mGlcQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.69.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-1" "^0.69.1" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" -"@swagger-api/apidom-parser-adapter-yaml-1-2@^0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.69.0.tgz#d95aab7e8b34bc703f510250bfc8f315dd87fd31" - integrity sha512-wfvFXg9xSz89hg/MRd1u6ESUb2UQmVJVIS2wWZwi1UXN9+F3Yh2l8RB5JchJYb5bqu2HX1ZYJ6FxG3dQTQICyQ== +"@swagger-api/apidom-parser-adapter-yaml-1-2@^0.69.1": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.69.1.tgz#290f8c0b10b165a6fe09ab292ebe61861a0d3b95" + integrity sha512-RbAaxdhEAuc9ZAWhvCss1yQQ/AW85keuvzoqFIOZ7Px2UaSoBRQVTYq7sFou9LhLJbOF1Iz6Hs1wTqqq6QRf3A== dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.69.0" - "@swagger-api/apidom-core" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" "@types/ramda" "=0.28.23" ramda "=0.28.0" ramda-adjunct "=3.4.0" @@ -1991,35 +1991,35 @@ tree-sitter-yaml "=0.5.0" web-tree-sitter "=0.20.7" -"@swagger-api/apidom-reference@=0.69.0": - version "0.69.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-0.69.0.tgz#c7402693f40dde3e5b01725fdb3fda02b4b11bea" - integrity sha512-Sc3My/qTa90ofWXRaULkQ2oCUlgUCTbPN209jk/Lg0cywPTgeVEVn7Awpp2ftxl007uPPr2PwUzn/K6zzj+gyg== +"@swagger-api/apidom-reference@>=0.69.1 <1.0.0": + version "0.69.1" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-0.69.1.tgz#2d27ce8ffcc720f3a21dbe1d4d553ef9f3e1b2cf" + integrity sha512-P/HD5l9zoQAR6H6IL52Y4SjxBXRCY2kzXa0CH+jKqpNNQxLEPf7penP9T6rH339BvKhATK5LanxDYtQZRCDBdw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^0.69.0" + "@swagger-api/apidom-core" "^0.69.1" "@types/ramda" "=0.28.23" axios "=1.3.4" - minimatch "=7.3.0" + minimatch "=7.4.3" process "=0.11.10" ramda "=0.28.0" ramda-adjunct "=3.4.0" stampit "=4.3.2" optionalDependencies: - "@swagger-api/apidom-json-pointer" "^0.69.0" - "@swagger-api/apidom-ns-asyncapi-2" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-0" "^0.69.0" - "@swagger-api/apidom-ns-openapi-3-1" "^0.69.0" - "@swagger-api/apidom-parser-adapter-api-design-systems-json" "^0.69.0" - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml" "^0.69.0" - "@swagger-api/apidom-parser-adapter-asyncapi-json-2" "^0.69.0" - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2" "^0.69.0" - "@swagger-api/apidom-parser-adapter-json" "^0.69.0" - "@swagger-api/apidom-parser-adapter-openapi-json-3-0" "^0.69.0" - "@swagger-api/apidom-parser-adapter-openapi-json-3-1" "^0.69.0" - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0" "^0.69.0" - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^0.69.0" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.0" + "@swagger-api/apidom-json-pointer" "^0.69.1" + "@swagger-api/apidom-ns-asyncapi-2" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-0" "^0.69.1" + "@swagger-api/apidom-ns-openapi-3-1" "^0.69.1" + "@swagger-api/apidom-parser-adapter-api-design-systems-json" "^0.69.1" + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml" "^0.69.1" + "@swagger-api/apidom-parser-adapter-asyncapi-json-2" "^0.69.1" + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2" "^0.69.1" + "@swagger-api/apidom-parser-adapter-json" "^0.69.1" + "@swagger-api/apidom-parser-adapter-openapi-json-3-0" "^0.69.1" + "@swagger-api/apidom-parser-adapter-openapi-json-3-1" "^0.69.1" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0" "^0.69.1" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^0.69.1" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.69.1" "@swc/helpers@^0.4.14": version "0.4.14" @@ -2974,7 +2974,7 @@ axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== -axios@=1.3.4, axios@^1.3.4: +axios@=1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== @@ -2983,6 +2983,15 @@ axios@=1.3.4, axios@^1.3.4: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542" + integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -4234,10 +4243,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -dompurify@=2.3.10: - version "2.3.10" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.10.tgz#901f7390ffe16a91a5a556b94043314cd4850385" - integrity sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g== +dompurify@=3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.1.tgz#a0933f38931b3238934dd632043b727e53004289" + integrity sha512-60tsgvPKwItxZZdfLmamp0MTcecCta3avOhsLgPZ0qcWt96OasFfhkeIRbJ6br5i0fQawT1/RBGB5L58/Jpwuw== domutils@^1.7.0: version "1.7.0" @@ -5508,10 +5517,10 @@ i18next-localstorage-backend@^4.1.0: dependencies: "@babel/runtime" "^7.20.6" -i18next@^22.4.13: - version "22.4.13" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.13.tgz#02e291ab0056eab13b7d356fb454ff991923eaa0" - integrity sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg== +i18next@^22.4.14: + version "22.4.14" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.14.tgz#18dd94e9adc2618497c7de101a206e1ca3a18727" + integrity sha512-VtLPtbdwGn0+DAeE00YkiKKXadkwg+rBUV+0v8v0ikEjwdiJ0gmYChVE4GIa9HXymY6wKapkL93vGT7xpq6aTw== dependencies: "@babel/runtime" "^7.20.6" @@ -6804,10 +6813,10 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@=7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.3.0.tgz#cfb7337e7460308e7147c58250fa0dee3da7929c" - integrity sha512-WaMDuhKa7a6zKiwplR1AOz+zGvJba24k5VU1Cy6NhEguavT2YRlHxuINUgTas4wiS6fwBpYq4TcA1XIECSntyw== +minimatch@=7.4.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.3.tgz#012cbf110a65134bb354ae9773b55256cdb045a2" + integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== dependencies: brace-expansion "^2.0.1" @@ -8338,19 +8347,19 @@ react-refresh@^0.11.0: integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-router-dom@6: - version "6.7.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.7.0.tgz#0249f4ca4eb704562b8b0ff29caeb928c3a6ed38" - integrity sha512-jQtXUJyhso3kFw430+0SPCbmCmY1/kJv8iRffGHwHy3CkoomGxeYzMkmeSPYo6Egzh3FKJZRAL22yg5p2tXtfg== + version "6.10.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.10.0.tgz#090ddc5c84dc41b583ce08468c4007c84245f61f" + integrity sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg== dependencies: - "@remix-run/router" "1.3.0" - react-router "6.7.0" + "@remix-run/router" "1.5.0" + react-router "6.10.0" -react-router@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.7.0.tgz#db262684c13b5c2970694084ae9e8531718a0681" - integrity sha512-KNWlG622ddq29MAM159uUsNMdbX8USruoKnwMMQcs/QWZgFUayICSn2oB7reHce1zPj6CG18kfkZIunSSRyGHg== +react-router@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.10.0.tgz#230f824fde9dd0270781b5cb497912de32c0a971" + integrity sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ== dependencies: - "@remix-run/router" "1.3.0" + "@remix-run/router" "1.5.0" react-scripts@5.0.1: version "5.0.1" @@ -8789,10 +8798,10 @@ sass-loader@^12.3.0: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.60.0: - version "1.60.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.60.0.tgz#657f0c23a302ac494b09a5ba8497b739fb5b5a81" - integrity sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ== +sass@^1.61.0: + version "1.61.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.61.0.tgz#d1f6761bb833887b8fdab32a24e052c40531d02b" + integrity sha512-PDsN7BrVkNZK2+dj/dpKQAWZavbAQ87IXqVvw2+oEYI+GwlTWkvbQtL7F2cCNbMqJEYKPh1EcjSxsnqIb/kyaQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9439,16 +9448,16 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.19.1: - version "3.19.2" - resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.19.2.tgz#7fabea7d953c19532670f3ee983a61addb134304" - integrity sha512-oBR6VtD99yJOY8W3vf1h8zU91H5UpwUk2trSL4xzZIzChWtlaOMyWh+/GyUGgDCmQY4B1E4qTgAD/kFQ4dFnnA== +swagger-client@^3.19.5: + version "3.19.5" + resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.19.5.tgz#5e2fc71cf0308a2e884265b416bce99e2fc19fe8" + integrity sha512-ssRMlGoYswj7/hlZV0EtGi406Y8/hfUAVw5SIqbWlsXSkaf+FfTWGRO39WOmbpfhsdLsskj/J2wmytPpbu2Njg== dependencies: "@babel/runtime-corejs3" "^7.20.13" - "@swagger-api/apidom-core" "=0.69.0" - "@swagger-api/apidom-json-pointer" "=0.69.0" - "@swagger-api/apidom-ns-openapi-3-1" "=0.69.0" - "@swagger-api/apidom-reference" "=0.69.0" + "@swagger-api/apidom-core" ">=0.69.1 <1.0.0" + "@swagger-api/apidom-json-pointer" ">=0.69.1 <1.0.0" + "@swagger-api/apidom-ns-openapi-3-1" ">=0.69.1 <1.0.0" + "@swagger-api/apidom-reference" ">=0.69.1 <1.0.0" cookie "~0.5.0" cross-fetch "^3.1.5" deepmerge "~4.3.0" @@ -9462,10 +9471,10 @@ swagger-client@^3.19.1: traverse "~0.6.6" url "~0.11.0" -swagger-ui@^4.18.1: - version "4.18.1" - resolved "https://registry.yarnpkg.com/swagger-ui/-/swagger-ui-4.18.1.tgz#14b90dba50cb827e57747458ef455f99a677535b" - integrity sha512-KMG/Mg+b7oPtBOlpx9abbmU6Rm86kiVUvvpR3EkplBz0CSnseuQZN2XdDZKD7QsvM78NkUhn53y5EZCb+4rd1g== +swagger-ui@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/swagger-ui/-/swagger-ui-4.18.2.tgz#35b4c05aedb5c055d4698932f42c4dd23f680073" + integrity sha512-0IFzqYLBZ2BQYOW5lbDzF9BZl2o2/IDXYhErsazUXHWIXLkMDCxsgd+ocdj4AGtUO3gdGk4QZgHkJwZb/OGbgg== dependencies: "@babel/runtime-corejs3" "^7.18.9" "@braintree/sanitize-url" "=6.0.2" @@ -9473,7 +9482,7 @@ swagger-ui@^4.18.1: classnames "^2.3.1" css.escape "1.5.1" deep-extend "0.6.0" - dompurify "=2.3.10" + dompurify "=3.0.1" ieee754 "^1.2.1" immutable "^3.x.x" js-file-download "^0.4.12" @@ -9498,7 +9507,7 @@ swagger-ui@^4.18.1: reselect "^4.1.5" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.19.1" + swagger-client "^3.19.5" url-parse "^1.5.8" xml "=1.0.1" xml-but-prettier "^1.0.1"
{server.name}{server.name}{noDataWarning} {
{t('html.generic.none')} -
{connection.geolocation} {connection.date}