This commit is contained in:
AuroraLS3 2024-01-27 08:07:53 +00:00
parent 24bfba3098
commit 2817d3b43d
30 changed files with 297 additions and 186 deletions

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "持续低 TPS 时间"
entities: "实体"
errors: "Plan 错误日志"
export: "Export"
exported: "数据导出时间"
favoriteServer: "最喜欢的服务器"
firstSession: "第一次会话"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Při nízkých TPS:"
entities: "Entity"
errors: "Plan Error Logs"
export: "Export"
exported: "Doba exportu dat"
favoriteServer: "Oblíbený server"
firstSession: "První relace"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Während niedriger TPS-Spitzen:"
entities: "Entitäten"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Lieblingsserver"
firstSession: "Erste Sitzung"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "During Low TPS Spikes:"
entities: "Entities"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Favorite Server"
firstSession: "First session"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Durante picos bajos de TPS:"
entities: "Entidades"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Servidor favorito"
firstSession: "Primera sesión"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Matalan TPS:n aikana:"
entities: "Entiteetit"
errors: "Plan Virhelokit"
export: "Export"
exported: "Tietojen vientiaika"
favoriteServer: "Lempipalvelin"
firstSession: "Ensimmäinen sessio"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Pendant les pics de TPS bas :"
entities: "Entités"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Serveur Favori"
firstSession: "Première session"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Durante Spicchi TPS bassi:"
entities: "Entità"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Server Preferito"
firstSession: "Prima sessione"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "TPSの低下までの時間:"
entities: "エンティティ数"
errors: "Planエラーログ"
export: "Export"
exported: "データエクスポート時間"
favoriteServer: "お気に入りのサーバー"
firstSession: "初参加"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "낮은 TPS 스파이크 동안:"
entities: "엔티티"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "즐겨찾는 서버"
firstSession: "첫 번째 세션"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Tijdens lage TPS-pieken:"
entities: "Entiteiten"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Favoeriete Server"
firstSession: "Eerste sessie"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "During Low TPS Spikes:"
entities: "Entidades"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Servidor Favorito"
firstSession: "First session"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Во время низкого TPS:"
entities: "Объекты"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Любимый сервер"
firstSession: "Первая сессия"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Düşük TPS Artışları Sırasında:"
entities: "Varlıklar"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "Favori Sunucu"
firstSession: "İlk seans"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "Під час низького TPS:"
entities: "Об`єкти"
errors: "Plan Error Logs"
export: "Export"
exported: "Час експорту даних"
favoriteServer: "Улюблений сервер"
firstSession: "Перша сесія"

View File

@ -338,6 +338,7 @@ html:
duringLowTps: "持續低 TPS 時間"
entities: "實體"
errors: "Plan Error Logs"
export: "Export"
exported: "Data export time"
favoriteServer: "最喜愛的伺服器"
firstSession: "第一此會話"

View File

@ -19,28 +19,29 @@
"@fullcalendar/interaction": "^6.1.10",
"@fullcalendar/react": "^6.1.10",
"@highcharts/map-collection": "^2.1.0",
"@testing-library/jest-dom": "^6.2.0",
"@testing-library/jest-dom": "^6.3.0",
"@testing-library/react": "^14.1.2",
"@testing-library/user-event": "^14.5.2",
"axios": "^1.6.4",
"axios": "^1.6.7",
"bootstrap": "^5.3.2",
"export-to-csv": "^1.2.2",
"highcharts": "^10.3.3",
"i18next": "^23.7.16",
"i18next": "^23.7.19",
"i18next-chained-backend": "^4.6.2",
"i18next-http-backend": "^2.4.2",
"i18next-localstorage-backend": "^4.2.0",
"masonry-layout": "^4.2.2",
"moment": "^2.30.1",
"react": "^18.2.0",
"react-bootstrap": "^2.9.2",
"react-bootstrap": "^2.10.0",
"react-bootstrap-range-slider": "^3.0.8",
"react-dom": "^18.2.0",
"react-i18next": "^14.0.0",
"react-i18next": "^14.0.1",
"react-mcjsonchat": "^1.0.0",
"react-router-dom": "6",
"sass": "^1.69.7",
"sass": "^1.70.0",
"source-map-explorer": "^2.5.2",
"swagger-ui": "^5.10.5",
"swagger-ui": "^5.11.0",
"web-vitals": "^3.0.2"
},
"scripts": {
@ -68,6 +69,6 @@
},
"devDependencies": {
"@vitejs/plugin-react": "^4.2.1",
"vite": "^5.0.10"
"vite": "^5.0.12"
}
}

View File

@ -7,12 +7,13 @@ import DataTablesTable from "../../table/DataTablesTable";
import {CardLoader} from "../../navigation/Loader";
import {Link} from "react-router-dom";
import {faCalendarCheck, faCalendarPlus, faClock} from "@fortawesome/free-regular-svg-icons";
import FormattedDate from "../../text/FormattedDate";
import FormattedTime from "../../text/FormattedTime";
import {formatDate, useDatePreferences} from "../../text/FormattedDate";
import {useTimePreferences} from "../../text/FormattedTime";
import ExtensionIcon from "../../extensions/ExtensionIcon";
import {ExtensionValueTableCell} from "../../extensions/ExtensionCard";
import {usePreferences} from "../../../hooks/preferencesHook";
import {formatDecimals} from "../../../util/formatters";
import {formatTimeAmount} from "../../../util/format/TimeAmountFormat.js";
const getActivityGroup = value => {
const VERY_ACTIVE = 3.75;
@ -38,6 +39,9 @@ const PlayerListCard = ({data, title, justList, orderBy}) => {
const [options, setOptions] = useState(undefined);
const timePreferences = useTimePreferences();
const datePreferences = useDatePreferences();
useEffect(() => {
if (!data) return;
@ -80,20 +84,25 @@ const PlayerListCard = ({data, title, justList, orderBy}) => {
}
}));
const formatDateEasy = date => {
return formatDate(date, datePreferences.offset, datePreferences.pattern, false, datePreferences.recentDaysPattern, t);
}
const rows = data.players.map(player => {
const row = {
name: player.playerName,
uuid: player.playerUUID,
link: <Link to={"/player/" + player.playerUUID}>{player.playerName}</Link>,
activityIndex: player.activityIndex,
activityGroup: t(getActivityGroup(player.activityIndex)),
activityIndexAndGroup: formatDecimals(player.activityIndex, decimalFormat) + " (" + t(getActivityGroup(player.activityIndex)) + ")",
activePlaytime: player.playtimeActive,
activePlaytimeFormatted: <FormattedTime timeMs={player.playtimeActive}/>,
activePlaytimeFormatted: formatTimeAmount(timePreferences, player.playtimeActive),
sessions: player.sessionCount,
registered: player.registered,
registeredFormatted: <FormattedDate date={player.registered}/>,
registeredFormatted: formatDateEasy(player.registered),
lastSeen: player.lastSeen,
lastSeenFormatted: <FormattedDate date={player.lastSeen}/>,
lastSeenFormatted: formatDateEasy(player.lastSeen),
country: player.country,
pingAverage: player.pingAverage,
pingAverageFormatted: formatDecimals(player.pingAverage, decimalFormat) + "ms",

View File

@ -8,6 +8,8 @@ import {faCalendarCheck, faClock} from "@fortawesome/free-regular-svg-icons";
import React from "react";
import {TableRow} from "../../../table/TableRow";
import {CardLoader} from "../../../navigation/Loader";
import FormattedDay from "../../../text/FormattedDay.jsx";
import FormattedTime, {formatTimeFunction} from "../../../text/FormattedTime.jsx";
const ServerWeekComparisonCard = ({data}) => {
const {t} = useTranslation();
@ -20,11 +22,18 @@ const ServerWeekComparisonCard = ({data}) => {
</h6>
</Card.Header>
<ComparisonTable comparisonHeader={t('html.label.comparing7days')}
headers={[data.start + ' - ' + data.midpoint, data.midpoint + ' - ' + data.end, t('html.label.trend')]}>
<TableRow icon={faUsers} color="blue" text={t('html.label.uniquePlayers')}
values={[data.unique_before, data.unique_after,
headers={[
<><FormattedDay date={data.start}/> - <FormattedDay date={data.midpoint}/></>,
<><FormattedDay date={data.midpoint}/> - <FormattedDay date={data.end}/></>,
t('html.label.trend')]}>
<TableRow icon={faUsers} color="blue"
text={t('html.label.uniquePlayers')}
values={[
data.unique_before,
data.unique_after,
<BigTrend key={JSON.stringify(data.unique_trend)}
trend={data.unique_trend}/>]}/>
trend={data.unique_trend}/>
]}/>
<TableRow icon={faUsers} color="light-green" text={t('html.label.newPlayers')}
values={[data.new_before, data.new_after,
<BigTrend key={JSON.stringify(data.new_trend)}
@ -35,14 +44,20 @@ const ServerWeekComparisonCard = ({data}) => {
trend={data.regular_trend}/>]}/>
<TableRow icon={faClock} color="green"
text={t('html.label.averagePlaytime') + ' ' + t('html.label.perPlayer')}
values={[data.average_playtime_before, data.average_playtime_after,
values={[
<FormattedTime key={"before-ms"} timeMs={data.average_playtime_before}/>,
<FormattedTime key={"after-ms"} timeMs={data.average_playtime_after}/>,
<BigTrend key={JSON.stringify(data.average_playtime_trend)}
trend={data.average_playtime_trend}/>]}/>
<TableRow icon={faClock} color="teal"
text={t('html.label.averageSessionLength')}
values={[data.session_length_average_before, data.session_length_average_after,
<BigTrend key={JSON.stringify(data.session_length_average_trend)}
trend={data.session_length_average_trend}/>]}/>
trend={data.average_playtime_trend}
format={formatTimeFunction}/>]}/>
{data.session_length_average_before !== undefined && <TableRow
icon={faClock} color="teal"
text={t('html.label.averageSessionLength')}
values={[<FormattedTime key={"before-ms"} timeMs={data.session_length_average_before}/>,
<FormattedTime key={"after-ms"} timeMs={data.session_length_average_after}/>,
<BigTrend key={JSON.stringify(data.session_length_average_trend)}
trend={data.session_length_average_trend}
format={formatTimeFunction}/>]}/>}
<TableRow icon={faCalendarCheck} color="teal" text={t('html.label.sessions')}
values={[data.sessions_before, data.sessions_after,
<BigTrend key={JSON.stringify(data.sessions_trend)}

View File

@ -9,6 +9,8 @@ import {CardLoader} from "../../../navigation/Loader";
import ExtendableCardBody from "../../../layout/extension/ExtendableCardBody";
import {useMetadata} from "../../../../hooks/metadataHook";
import CurrentUptime from "../../../datapoint/CurrentUptime";
import FormattedTime from "../../../text/FormattedTime.jsx";
import FormattedDate from "../../../text/FormattedDate.jsx";
const ServerAsNumbersCard = ({data}) => {
const {t} = useTranslation();
@ -40,23 +42,23 @@ const ServerAsNumbersCard = ({data}) => {
value={data.online_players} bold/>
{showPeaks && <>
<hr/>
<Datapoint name={t('html.label.lastPeak') + ' (' + data.last_peak_date + ')'}
<Datapoint name={<>{t('html.label.lastPeak')} (<FormattedDate date={data.last_peak_date}/>)</>}
color={'blue'} icon={faChartLine}
value={data.last_peak_players} valueLabel={t('html.unit.players')} bold/>
<Datapoint name={t('html.label.bestPeak') + ' (' + data.best_peak_date + ')'}
<Datapoint name={<>{t('html.label.bestPeak')} (<FormattedDate date={data.best_peak_date}/>)</>}
color={'light-green'} icon={faChartLine}
value={data.best_peak_players} valueLabel={t('html.unit.players')} bold/>
</>}
<hr/>
<Datapoint name={t('html.label.totalPlaytime')}
color={'green'} icon={faClock}
value={data.playtime}/>
value={<FormattedTime timeMs={data.playtime}/>}/>
<Datapoint name={t('html.label.averagePlaytime') + ' ' + t('html.label.perPlayer')}
color={'green'} icon={faClock}
value={data.player_playtime}/>
value={<FormattedTime timeMs={data.player_playtime}/>}/>
<Datapoint name={t('html.label.averageSessionLength')}
color={'teal'} icon={faClock}
value={data.session_length_avg}/>
value={<FormattedTime timeMs={data.session_length_avg}/>}/>
<Datapoint name={t('html.label.sessions')}
color={'teal'} icon={faCalendarCheck}
value={data.sessions} bold/>

View File

@ -4,6 +4,8 @@ import {faPowerOff} from "@fortawesome/free-solid-svg-icons";
import {faQuestionCircle} from "@fortawesome/free-regular-svg-icons";
import Datapoint from "../Datapoint";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import FormattedTime from "../text/FormattedTime.jsx";
import {isNumber} from "../../util/isNumber.js";
const CurrentUptime = ({uptime}) => {
const {t} = useTranslation();
@ -15,7 +17,7 @@ const CurrentUptime = ({uptime}) => {
return (
<Datapoint icon={faPowerOff} color={'light-green'}
name={t('html.label.currentUptime')}
value={uptime} valueLabel={infoBubble}/>
value={isNumber(uptime) && <FormattedTime timeMs={uptime}/> || uptime} valueLabel={infoBubble}/>
)
};

View File

@ -1,6 +1,6 @@
import React, {useCallback, useEffect, useState} from 'react';
import {useTheme} from "../../hooks/themeHook";
import {Card, InputGroup} from "react-bootstrap";
import {Card, Dropdown, InputGroup} from "react-bootstrap";
import Select from "../input/Select";
import SearchField from "../input/SearchField";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
@ -17,6 +17,7 @@ import Toggle from "../input/Toggle";
import CollapseWithButton from "../layout/CollapseWithButton";
import {faMinusSquare, faPlusSquare} from "@fortawesome/free-regular-svg-icons";
import {Trans, useTranslation} from "react-i18next";
import {download, generateCsv, mkConfig} from "export-to-csv";
const PaginationOption = ({onClick, children, selected}) => (
<li>
@ -79,6 +80,51 @@ const VisibleColumnsSelector = ({columns, visibleColumnIndexes, toggleColumn}) =
)
}
const ExportMenu = ({matchingData}) => {
const {t} = useTranslation();
const [generating, setGenerating] = useState(false);
const hasData = matchingData.length > 0;
const exportCSV = useCallback(async () => {
setGenerating(true);
const rows = matchingData.map(row => {
const mapped = {};
for (let entry of Object.entries(row)) {
if (entry[1] === undefined || entry[1]["$$typeof"] === undefined) {
mapped[entry[0]] = entry[1];
}
}
return mapped;
})
const csvConfig = mkConfig({
useKeysAsHeaders: true,
filename: "data-" + new Date().toISOString().replaceAll(":", '').substring(0, 17)
});
const csvOutput = generateCsv(csvConfig)(rows);
await download(csvConfig)(csvOutput);
setGenerating(false)
}, [matchingData, setGenerating])
return (
<>{hasData &&
<Dropdown>
<Dropdown.Toggle variant={""} id="dropdown-basic">
{generating &&
<FontAwesomeIcon icon={"gear"} className={"fa-spin"} title={t('html.label.export')}/>}
{!generating && <FontAwesomeIcon icon={"file-export"} title={t('html.label.export')}/>}
</Dropdown.Toggle>
<Dropdown.Menu>
<Dropdown.Item onClick={exportCSV}><FontAwesomeIcon
icon={"file-export"}/> {t('html.label.export')} CSV</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
}</>
)
}
const DataTablesTable = ({id, rowKeyFunction, options, colorClass}) => {
const {t} = useTranslation();
const {nightModeEnabled} = useTheme();
@ -205,6 +251,9 @@ const DataTablesTable = ({id, rowKeyFunction, options, colorClass}) => {
<VisibleColumnsSelector columns={columns} visibleColumnIndexes={visibleColumnIndexes}
toggleColumn={toggleColumn}/>
</div>}
<div className={"float-end dataTables_columns"}>
<ExportMenu matchingData={matchingData} columns={columns}/>
</div>
<table id={id}
className={"datatable table table-bordered table-striped" + (nightModeEnabled ? " table-dark" : '')}
style={{width: "100%"}}>

View File

@ -3,13 +3,13 @@ import {usePreferences} from "../../hooks/preferencesHook";
import {SimpleDateFormat} from "../../util/format/SimpleDateFormat";
import {useMetadata} from "../../hooks/metadataHook";
import {useTranslation} from "react-i18next";
import {isNumber} from "../../util/isNumber.js";
const FormattedDate = ({date}) => {
const {t} = useTranslation();
export const useDatePreferences = () => {
const {timeZoneOffsetHours} = useMetadata();
const {preferencesLoaded, dateFormatNoSeconds, recentDaysInDateFormat} = usePreferences();
if (!preferencesLoaded || date === undefined || date === null) return <></>
if (!preferencesLoaded) return {};
const pattern = dateFormatNoSeconds;
const recentDays = recentDaysInDateFormat;
@ -17,6 +17,10 @@ const FormattedDate = ({date}) => {
const offset = timeZoneOffsetHours * 60 * 60 * 1000;
return {pattern, recentDays, recentDaysPattern, offset};
}
export function formatDate(date, offset, pattern, recentDays, recentDaysPattern, t) {
const dayMs = 24 * 60 * 60 * 1000;
const timestamp = date - offset;
const now = Date.now();
@ -33,11 +37,18 @@ const FormattedDate = ({date}) => {
}
}
const formatted = date !== 0 ? new SimpleDateFormat(format).format(timestamp) : '-';
return date !== 0 ? new SimpleDateFormat(format).format(timestamp) : '-'
}
return (
<>{formatted}</>
)
const FormattedDate = ({date}) => {
const {t} = useTranslation();
const {pattern, recentDays, recentDaysPattern, offset} = useDatePreferences();
if (!pattern || date === undefined || date === null) return <></>;
if (!isNumber(date)) return date;
return formatDate(date, offset, pattern, recentDays, recentDaysPattern, t);
};
export default FormattedDate

View File

@ -0,0 +1,24 @@
import React from 'react';
import {SimpleDateFormat} from "../../util/format/SimpleDateFormat";
import {useMetadata} from "../../hooks/metadataHook";
import {isNumber} from "../../util/isNumber.js";
const FormattedDay = ({date}) => {
const {timeZoneOffsetHours} = useMetadata();
if (date === undefined || date === null) return <></>;
if (!isNumber(date)) return date;
const pattern = "MMMMM d";
const offset = timeZoneOffsetHours * 60 * 60 * 1000;
const timestamp = date - offset;
const formatted = date !== 0 ? new SimpleDateFormat(pattern).format(timestamp) : '-';
return (
<>{formatted}</>
)
};
export default FormattedDay

View File

@ -1,13 +1,14 @@
import React from 'react';
import {usePreferences} from "../../hooks/preferencesHook";
import {formatTimeAmount} from "../../util/format/TimeAmountFormat";
import {isNumber} from "../../util/isNumber.js";
const FormattedTime = ({timeMs}) => {
export const useTimePreferences = () => {
const {preferencesLoaded, timeFormat} = usePreferences();
if (!preferencesLoaded) return <></>
if (!preferencesLoaded) return undefined;
const options = {
return {
YEAR: timeFormat.year,
YEARS: timeFormat.years,
MONTH: timeFormat.month,
@ -19,11 +20,20 @@ const FormattedTime = ({timeMs}) => {
SECONDS: timeFormat.seconds,
ZERO: timeFormat.zero
}
const formatted = formatTimeAmount(options, timeMs);
}
return (
<>{formatted}</>
)
const FormattedTime = ({timeMs}) => {
const options = useTimePreferences()
if (!options) return <></>;
if (!isNumber(timeMs)) return timeMs;
return formatTimeAmount(options, timeMs);
};
export const formatTimeFunction = time => {
return (
<FormattedTime timeMs={time}/>
);
}
export default FormattedTime

View File

@ -9,17 +9,20 @@ const TrendDownGood = ({value}) => <span className="badge bg-success"><Fa icon={
const TrendSame = ({value}) => <span className="badge bg-warning"><Fa icon={faCaretRight}/>{value}</span>;
const BigTrend = ({trend}) => {
const BigTrend = ({trend, format}) => {
if (!trend) {
return <TrendSame value={'?'}/>;
}
const value = format ? format(trend.text) : trend.text;
switch (trend.direction) {
case '+':
return (trend.reversed ? <TrendUpBad value={trend.text}/> : <TrendUpGood value={trend.text}/>);
return (trend.reversed ? <TrendUpBad value={trend.text}/> : <TrendUpGood value={value}/>);
case '-':
return (trend.reversed ? <TrendDownGood value={trend.text}/> : <TrendDownBad value={trend.text}/>);
return (trend.reversed ? <TrendDownGood value={trend.text}/> : <TrendDownBad value={value}/>);
default:
return <TrendSame value={trend.text}/>;
return <TrendSame value={value}/>;
}
}

View File

@ -1505,4 +1505,14 @@ ul.filters {
.nav-item.disabled {
opacity: 30%;
}
}
.link {
color: var(--bs-link-color);
opacity: var(--bs-link-opacity);
text-decoration: underline;
}
.link:hover {
color: var(--bs-link-hover-color)
}

View File

@ -0,0 +1,4 @@
// https://stackoverflow.com/a/1421988/20825073
export function isNumber(n) {
return !isNaN(parseFloat(n)) && !isNaN(n - 0)
}

View File

@ -23,6 +23,7 @@ import {CardLoader} from "../../components/navigation/Loader";
import ExtendableRow from "../../components/layout/extension/ExtendableRow";
import {useAuth} from "../../hooks/authenticationHook";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import FormattedTime from "../../components/text/FormattedTime.jsx";
const Last7DaysCard = ({data}) => {
const {t} = useTranslation();
@ -64,7 +65,7 @@ const Last7DaysCard = ({data}) => {
value={data.low_tps_spikes} bold/>
<Datapoint name={t('html.label.downtime')}
color={'red'} icon={faPowerOff}
value={data.downtime}/>
value={<FormattedTime timeMs={data.downtime}/>}/>
</Card.Body>
</Card>
)

View File

@ -315,15 +315,15 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.23.5":
version "7.23.7"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.7.tgz#2c3d323d21569f2950c9126780bfa400632360bd"
integrity sha512-ER55qzLREVA5YxeyQ3Qu48tgsF2ZrFjFjUS6V6wF0cikSw+goBJgB9PBRM1T6+Ah4iiM+sxmfS/Sy/jdzFfhiQ==
"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.23.7":
version "7.23.8"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.8.tgz#b8aa3d47570bdd08fed77fdfd69542118af0df26"
integrity sha512-2ZzmcDugdm0/YQKFVYsXiwUN7USPX8PM7cytpb4PFl87fM+qYPSvTZX//8tyeJB1j0YDmafBJEbl5f8NfLyuKw==
dependencies:
core-js-pure "^3.30.2"
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
@ -391,10 +391,10 @@
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
"@braintree/sanitize-url@=6.0.4":
version "6.0.4"
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783"
integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==
"@braintree/sanitize-url@=7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.0.0.tgz#8899d8e68a1b3f6933d4ad57a263fd3cf1d34d8a"
integrity sha512-GMu2OJiTd1HSe74bbJYQnVvELANpYiGFZELyyTM1CR0sdv5ReQAcJ/c/8pIrPab3lO11+D+EpuGLUxqz+y832g==
"@esbuild/android-arm64@0.19.5":
version "0.19.5"
@ -632,10 +632,10 @@
dependencies:
"@swc/helpers" "^0.4.14"
"@remix-run/router@1.14.1":
version "1.14.1"
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.1.tgz#6d2dd03d52e604279c38911afc1079d58c50a755"
integrity sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==
"@remix-run/router@1.14.2":
version "1.14.2"
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17"
integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==
"@restart/hooks@^0.4.9":
version "0.4.9"
@ -1137,10 +1137,10 @@
lz-string "^1.4.4"
pretty-format "^27.0.2"
"@testing-library/jest-dom@^6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.2.0.tgz#b572bd5cd6b29314487bac7ba393188e4987b4f7"
integrity sha512-+BVQlJ9cmEn5RDMUS8c2+TU6giLvzaHZ8sU/x0Jj7fk+6/46wPdwlgOPcpxS17CjcanBi/3VmGMqVr2rmbUmNw==
"@testing-library/jest-dom@^6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.3.0.tgz#e8d308e0c0e91d882340cbbfdea0e4daa7987d36"
integrity sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==
dependencies:
"@adobe/css-tools" "^4.3.2"
"@babel/runtime" "^7.9.2"
@ -1210,14 +1210,6 @@
dependencies:
"@types/unist" "*"
"@types/hoist-non-react-statics@^3.3.1":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
dependencies:
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
"@types/prop-types@*":
version "15.7.5"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
@ -1362,10 +1354,10 @@ autolinker@^3.11.0:
dependencies:
tslib "^2.3.0"
axios@^1.4.0, axios@^1.6.4:
version "1.6.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.4.tgz#184ee1f63d412caffcf30d2c50982253c3ee86e0"
integrity sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==
axios@^1.4.0, axios@^1.6.7:
version "1.6.7"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7"
integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==
dependencies:
follow-redirects "^1.15.4"
form-data "^4.0.0"
@ -1523,10 +1515,10 @@ ci-info@^3.7.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
classnames@^2.3.1, classnames@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
classnames@^2.3.1, classnames@^2.3.2, classnames@^2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
cliui@^7.0.2:
version "7.0.4"
@ -1790,6 +1782,11 @@ expand-template@^2.0.3:
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
export-to-csv@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/export-to-csv/-/export-to-csv-1.2.2.tgz#24f09a2dba34aff65f8f97402a869e88232b8f58"
integrity sha512-d9BxkLlyxeyFU1yhQKGjnnEQj2fh6PjyDVGyiI/uj7PD/oe7Lo1551B1lTaQeXHGPRX2DHuk6i3JMZB6ncJApQ==
fast-json-patch@^3.0.0-1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947"
@ -2003,13 +2000,6 @@ highlight.js@^10.4.1, highlight.js@~10.7.0:
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
dependencies:
react-is "^16.7.0"
html-parse-stringify@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2"
@ -2038,10 +2028,10 @@ i18next-localstorage-backend@^4.2.0:
dependencies:
"@babel/runtime" "^7.22.15"
i18next@^23.7.16:
version "23.7.16"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.16.tgz#7026d18b7a3ac9e2ecfeb78da5e4da5ca33312ef"
integrity sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==
i18next@^23.7.19:
version "23.7.19"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.19.tgz#037ac683610417178b881355e5cdc38380c0ca17"
integrity sha512-1aP+YSJl+nLxr42ZJtNhpWpNWYsc6nCbVCf2x4uizIX1BYfcigiRMlb3vOkE1p3+qrI+aD6h5G2Fg+2d2oMIOQ==
dependencies:
"@babel/runtime" "^7.23.2"
@ -2673,10 +2663,10 @@ react-bootstrap-range-slider@^3.0.8:
classnames "^2.3.1"
prop-types "^15.7.2"
react-bootstrap@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.9.2.tgz#ee2bab4cb19df628a90868fa594a3b410fe0c0be"
integrity sha512-a36B+EHsAI/aH+ZhXNILBFnqscE3zr10dWmjBmfhIb2QR7KSXJiGzYd6Faf/25G8G7/CP9TCL2B0WhUBOD2UBQ==
react-bootstrap@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.0.tgz#0d9a003dc32cc5d9df972f1e581285d56e93c1d7"
integrity sha512-87gRP69VAfeU2yKgp8RI3HvzhPNrnYIV2QNranYXataz3ef+k7OhvKGGdxQLQfUsQ2RTmlY66tn4pdFrZ94hNg==
dependencies:
"@babel/runtime" "^7.22.5"
"@restart/hooks" "^0.4.9"
@ -2707,16 +2697,7 @@ react-debounce-input@=3.3.0:
lodash.debounce "^4"
prop-types "^15.8.1"
react-dom@=17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
scheduler "^0.20.2"
react-dom@^18.2.0:
"react-dom@>=16.8.0 <19", react-dom@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@ -2724,10 +2705,10 @@ react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.0"
react-i18next@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.0.0.tgz#eb39d2245fd1024237828c955f770e409a1ccb12"
integrity sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==
react-i18next@^14.0.1:
version "14.0.1"
resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.0.1.tgz#75351b25be076ad7391360b5a111b59ca87e0b63"
integrity sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==
dependencies:
"@babel/runtime" "^7.22.5"
html-parse-stringify "^3.0.1"
@ -2749,7 +2730,7 @@ react-inspector@^6.0.1:
resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d"
integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg==
react-is@^16.13.1, react-is@^16.3.2, react-is@^16.7.0:
react-is@^16.13.1, react-is@^16.3.2:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@ -2759,11 +2740,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-is@^18.0.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
react-lifecycles-compat@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
@ -2774,16 +2750,12 @@ react-mcjsonchat@^1.0.0:
resolved "https://registry.yarnpkg.com/react-mcjsonchat/-/react-mcjsonchat-1.0.0.tgz#6a0c748b074c06a2d64a66db76e5fb2036c48a9a"
integrity sha512-H/OYi1iRYFG2Bntj1EYWfTxOaWtIopHy6ILoaXtD3OFONK7kQnp0lXFf6sw1G3BU0DL7s8NL4+AmMCer/A5eIQ==
react-redux@^8.1.3:
version "8.1.3"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.3.tgz#4fdc0462d0acb59af29a13c27ffef6f49ab4df46"
integrity sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==
react-redux@^9.0.4:
version "9.0.4"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.0.4.tgz#6892d465f086507a517d4b53eb589876e6bc8344"
integrity sha512-9J1xh8sWO0vYq2sCxK2My/QO7MzUMRi3rpiILP/+tDr8krBHixC6JMM17fMK88+Oh3e4Ae6/sHIhNBgkUivwFA==
dependencies:
"@babel/runtime" "^7.12.1"
"@types/hoist-non-react-statics" "^3.3.1"
"@types/use-sync-external-store" "^0.0.3"
hoist-non-react-statics "^3.3.2"
react-is "^18.0.0"
use-sync-external-store "^1.0.0"
react-refresh@^0.14.0:
@ -2792,19 +2764,19 @@ react-refresh@^0.14.0:
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
react-router-dom@6:
version "6.21.1"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.1.tgz#58b459d2fe1841388c95bb068f85128c45e27349"
integrity sha512-QCNrtjtDPwHDO+AO21MJd7yIcr41UetYt5jzaB9Y1UYaPTCnVuJq6S748g1dE11OQlCFIQg+RtAA1SEZIyiBeA==
version "6.21.3"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.3.tgz#ef3a7956a3699c7b82c21fcb3dbc63c313ed8c5d"
integrity sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==
dependencies:
"@remix-run/router" "1.14.1"
react-router "6.21.1"
"@remix-run/router" "1.14.2"
react-router "6.21.3"
react-router@6.21.1:
version "6.21.1"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.1.tgz#8db7ee8d7cfc36513c9a66b44e0897208c33be34"
integrity sha512-W0l13YlMTm1YrpVIOpjCADJqEUpz1vm+CMo47RuFX4Ftegwm6KOYsL5G3eiE52jnJpKvzm6uB/vTKTPKM8dmkA==
react-router@6.21.3:
version "6.21.3"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.3.tgz#8086cea922c2bfebbb49c6594967418f1f167d70"
integrity sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==
dependencies:
"@remix-run/router" "1.14.1"
"@remix-run/router" "1.14.2"
react-syntax-highlighter@^15.5.0:
version "15.5.0"
@ -2827,15 +2799,7 @@ react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
react@=17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
react@^18.2.0:
"react@>=16.8.0 <19", react@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@ -2871,12 +2835,10 @@ redux-immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3"
integrity sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==
redux@^4.1.2:
version "4.2.0"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13"
integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==
dependencies:
"@babel/runtime" "^7.9.2"
redux@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b"
integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==
refractor@^3.6.0:
version "3.6.0"
@ -2915,10 +2877,10 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
reselect@^4.1.8:
version "4.1.8"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524"
integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==
reselect@^5.0.1:
version "5.1.0"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21"
integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==
ret@^0.2.0:
version "0.2.2"
@ -2963,23 +2925,15 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
sass@^1.69.7:
version "1.69.7"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.7.tgz#6e7e1c8f51e8162faec3e9619babc7da780af3b7"
integrity sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==
sass@^1.70.0:
version "1.70.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.70.0.tgz#761197419d97b5358cb25f9dd38c176a8a270a75"
integrity sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
scheduler@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
scheduler@^0.23.0:
version "0.23.0"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
@ -3151,7 +3105,7 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
swagger-client@^3.24.6:
swagger-client@^3.25.0:
version "3.25.0"
resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.25.0.tgz#c59b181bed7172475d275487e6ab8365bd3f06ec"
integrity sha512-p143zWkIhgyh2E5+3HPFMlCw3WkV9RbX9HyftfBdiccCbOlmHdcJC0XEJZxcm+ZA+80DORs0F30/mzk7sx4iwA==
@ -3173,15 +3127,15 @@ swagger-client@^3.24.6:
traverse "~0.6.6"
undici "^5.24.0"
swagger-ui@^5.10.5:
version "5.10.5"
resolved "https://registry.yarnpkg.com/swagger-ui/-/swagger-ui-5.10.5.tgz#9b48911fec80a5fcc7ab4db9f49119908b839202"
integrity sha512-IoaEuee7M7S9CV9lL1jQg168g0TcOG4xrAaEdZjbEUiqviore5LsTczGFIMrG6n/nX8oThtUZnIM5B4zeDA5Tw==
swagger-ui@^5.11.0:
version "5.11.0"
resolved "https://registry.yarnpkg.com/swagger-ui/-/swagger-ui-5.11.0.tgz#b7ea7ad63bf11187fe449f4b4ab25dcb4e834389"
integrity sha512-ceGW1I08H199Wy1RuMxWjH5dN17KjM+BW1cglqk5tipPZgoyPOBbVSiDZ+MsTjbk/gG2QK5CG+70JSBJLBx7/w==
dependencies:
"@babel/runtime-corejs3" "^7.23.5"
"@braintree/sanitize-url" "=6.0.4"
"@babel/runtime-corejs3" "^7.23.7"
"@braintree/sanitize-url" "=7.0.0"
base64-js "^1.5.1"
classnames "^2.3.1"
classnames "^2.5.1"
css.escape "1.5.1"
deep-extend "0.6.0"
dompurify "=3.0.6"
@ -3194,22 +3148,22 @@ swagger-ui@^5.10.5:
prop-types "^15.8.1"
randexp "^0.5.3"
randombytes "^2.1.0"
react "=17.0.2"
react ">=16.8.0 <19"
react-copy-to-clipboard "5.1.0"
react-debounce-input "=3.3.0"
react-dom "=17.0.2"
react-dom ">=16.8.0 <19"
react-immutable-proptypes "2.2.0"
react-immutable-pure-component "^2.2.0"
react-inspector "^6.0.1"
react-redux "^8.1.3"
react-redux "^9.0.4"
react-syntax-highlighter "^15.5.0"
redux "^4.1.2"
redux "^5.0.0"
redux-immutable "^4.0.0"
remarkable "^2.0.1"
reselect "^4.1.8"
reselect "^5.0.1"
serialize-error "^8.1.0"
sha.js "^2.4.11"
swagger-client "^3.24.6"
swagger-client "^3.25.0"
url-parse "^1.5.10"
xml "=1.0.1"
xml-but-prettier "^1.0.1"
@ -3387,10 +3341,10 @@ util-deprecate@^1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
vite@^5.0.10:
version "5.0.10"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.10.tgz#1e13ef5c3cf5aa4eed81f5df6d107b3c3f1f6356"
integrity sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==
vite@^5.0.12:
version "5.0.12"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47"
integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==
dependencies:
esbuild "^0.19.3"
postcss "^8.4.32"