From 944e6bb86e8a3a1f8a95157ef97c1cefc84b63b5 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Tue, 14 Oct 2025 16:11:13 -0400 Subject: [PATCH 01/19] Started with Decode quantData --- lib/games.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/games.ts b/lib/games.ts index 756ddc0d..6378bb62 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1888,6 +1888,18 @@ namespace Reefscape { ); } +namespace Decode { + export class QuantitativeData extends QuantData { + autoMovedPastStartingLine: boolean = false; + + autoArtifactsClassified: number = 0; + autoOverflowArtifacts: number = 0; + autoMotifArtifacts: number = 0; + + + } +} + export const games: { [id in GameId]: Game } = Object.freeze({ [GameId.Reefscape]: Reefscape.game, [GameId.IntoTheDeep]: IntoTheDeep.game, From 28b386185fd72130ee6a6a6e74ac1979508aaecb Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Tue, 14 Oct 2025 16:22:54 -0400 Subject: [PATCH 02/19] Quantdata done + Started on Enums --- lib/Enums.ts | 9 +++++++++ lib/games.ts | 16 +++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/Enums.ts b/lib/Enums.ts index ccd7a6f0..c0391cc9 100644 --- a/lib/Enums.ts +++ b/lib/Enums.ts @@ -109,3 +109,12 @@ export namespace ReefscapeEnums { Shallow = "Shallow", } } + +export namespace DecodeEnums{ + export enum EndgameParkStatus { + No = "No", + Partial = "Partial", + Full = "Full", + TwoBotPark = "Two Bot Park" + } +} \ No newline at end of file diff --git a/lib/games.ts b/lib/games.ts index 6378bb62..68248b22 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1,6 +1,7 @@ import { Dot } from "@/components/stats/Heatmap"; import { CenterStageEnums, + DecodeEnums, Defense, FrcDrivetrain, IntakeTypes, @@ -1890,13 +1891,18 @@ namespace Reefscape { namespace Decode { export class QuantitativeData extends QuantData { - autoMovedPastStartingLine: boolean = false; + AutoMovedPastStartingLine: boolean = false; - autoArtifactsClassified: number = 0; - autoOverflowArtifacts: number = 0; - autoMotifArtifacts: number = 0; + AutoArtifactsClassified: number = 0; + AutoOverflowArtifacts: number = 0; + AutoMotifArtifacts: number = 0; - + TeleopArtifactsClassified: number = 0; + TeleopOverflowArtifacts: number = 0; + TeleopMotifArtifacts: number = 0; + + EndgameParkStatus: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; + EndgameDefenseStatus: Defense = Defense.None; } } From 83367fa882ea0a70b0dcf5f3fe9ea9ff9d66355d Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Tue, 14 Oct 2025 16:39:08 -0400 Subject: [PATCH 03/19] PitData --- lib/games.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/games.ts b/lib/games.ts index 68248b22..c7399e79 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1904,6 +1904,16 @@ namespace Decode { EndgameParkStatus: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; EndgameDefenseStatus: Defense = Defense.None; } + + export class PitData extends PitReportData { + CanScoreClassifier: boolean = false; + CanScoreDepot: boolean = false; + CanOpenGate: boolean = false; + + PointsScoredAuto: number = 0; + AutoAccountsForMotif: boolean = false; + CanParkWithOtherBots: boolean = false + } } export const games: { [id in GameId]: Game } = Object.freeze({ From 13e303eca59ea92f5d8013d39ecb47d8692f4747 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Thu, 16 Oct 2025 15:47:34 -0400 Subject: [PATCH 04/19] pitReportLayout --- lib/games.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/games.ts b/lib/games.ts index c7399e79..255be0c5 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1909,11 +1909,24 @@ namespace Decode { CanScoreClassifier: boolean = false; CanScoreDepot: boolean = false; CanOpenGate: boolean = false; + CanParkWithOtherBots: boolean = false; PointsScoredAuto: number = 0; AutoAccountsForMotif: boolean = false; - CanParkWithOtherBots: boolean = false } + + const pitReportLayout: FormLayoutProps = { + Capabilities: [ + { key: "CanScoreClassifier", label: "Can Score Classifier?" }, + { key: "CanScoreDepot", label: "Can Score Depot?" }, + { key: "CanOpenGate", label: "Can Score Gate?" }, + { key: "CanParkWithOtherBots", label: "Can Park With Other Bots?" }, + ], + Auto: [ + { key: "PointsScoredAuto", label: "Average Auto Points" }, + { key: "AutoAccountsForMotif", label: "Auto Accounts For Motif?" }, + ], + }; } export const games: { [id in GameId]: Game } = Object.freeze({ From 44f34aea0f19eb8b3a965b8b5d111ab967bb7e6b Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Thu, 16 Oct 2025 16:36:09 -0400 Subject: [PATCH 05/19] Set up th rest of the parts needed for the game and started quant reports. --- lib/client/GameId.ts | 1 + lib/games.ts | 50 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/lib/client/GameId.ts b/lib/client/GameId.ts index d2f946cc..7eb6402a 100644 --- a/lib/client/GameId.ts +++ b/lib/client/GameId.ts @@ -3,6 +3,7 @@ export enum GameId { CenterStage = "CenterStage", IntoTheDeep = "IntoTheDeep", Reefscape = "Reefscape", + Decode = "Decode" } export const defaultGameId = GameId.Reefscape; diff --git a/lib/games.ts b/lib/games.ts index 255be0c5..564d9654 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1927,6 +1927,55 @@ namespace Decode { { key: "AutoAccountsForMotif", label: "Auto Accounts For Motif?" }, ], }; + + const quantitativeReportLayout: FormLayoutProps = { + Auto: [ + { key: "AutoMovedPastStart", label: "Moved Past Starting line"}, + [ + [ + { key: "AutoArtifactsClassified", label: "Artifacts Classified (Auto)"} + ], + [ + { key: "AutoOverflowArtifacts", label: "Overflow Artifacts (Auto)"} + ], + [ + { key: "AutoMotifArtifacts", label: "Motif Artifacts (Auto)"} + ] + ] + ], + Teleop: [ + + ], + "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"] + }; + + const statsLayout: StatsLayout = {} + + const pitStatsLayout: PitStatsLayout ={} + + function getBadges( + pitReport: Pitreport | undefined, + quantitativeReports: Report[] | undefined, + card: boolean, + ) {} + + function getAvgPoints(reports: Report[] | undefined) {} + + export const game = new Game( + "Decode", + 2026, + League.FTC, + QuantitativeData, + PitData, + pitReportLayout, + quantitativeReportLayout, + statsLayout, + pitStatsLayout, + "Decode", + "https://info.firstinspires.org/hs-fs/hubfs/2026%20Season/Season%20Assets/first_age_ftc_decode_logo_vertical_rgb_fullcolor.png?width=237&height=348&name=first_age_ftc_decode_logo_vertical_rgb_fullcolor.png", + "invert", + getBadges, + getAvgPoints, } export const games: { [id in GameId]: Game } = Object.freeze({ @@ -1934,4 +1983,5 @@ export const games: { [id in GameId]: Game } = Object.freeze({ [GameId.IntoTheDeep]: IntoTheDeep.game, [GameId.Crescendo]: Crescendo.game, [GameId.CenterStage]: CenterStage.game, + [GameId.Decode]: Decode.game, }); From b52f7be947ec62446f95921afe76ee257827cf34 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Thu, 16 Oct 2025 16:58:40 -0400 Subject: [PATCH 06/19] Finished quantdata layout --- lib/games.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/games.ts b/lib/games.ts index 564d9654..cae34991 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1944,7 +1944,17 @@ namespace Decode { ] ], Teleop: [ - + [ + [ + { key: "TeleopArtifactsClassified", label: "Artifacts Classified (Teleop)"} + ], + [ + { key: "TeleopOverflowArtifacts", label: "Overflow Artifacts (Teleop)"} + ], + [ + { key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)"} + ] + ] ], "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"] }; From c3fa9c15232dea6548d45e6c8ecf819d7046de64 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Thu, 6 Nov 2025 16:29:04 -0500 Subject: [PATCH 07/19] Stats layout done --- lib/games.ts | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 2 deletions(-) diff --git a/lib/games.ts b/lib/games.ts index cae34991..2e8389b7 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1959,7 +1959,122 @@ namespace Decode { "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"] }; - const statsLayout: StatsLayout = {} + const statsLayout: StatsLayout = { + sections: { + Auto: [ + { + key: "AutoArtifactsClassified", + label: "Average Amt Of Artifacts Classified Auto", + }, + { + label: "> Min Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "AutoArtifactsClassified"); + }, + }, + { + label: "> Max Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "AutoArtifactsClassified"); + }, + }, + { + key: "AutoOverflowArtifacts", + label: "Average Amt Of Overflow Artifacts Classified Auto", + }, + { + label: "> Min Overflow Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "AutoOverflowArtifacts"); + }, + }, + { + label: "> Max Overflow Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "AutoOverflowArtifacts"); + }, + }, + { + key: "AutoMotifArtifacts", + label: "Average Amt Of Motif Artifacts Classified Auto", + }, + { + label: "> Min Motif Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "AutoMotifArtifacts"); + }, + }, + { + label: "> Max Motif Artifacts Classified Auto", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "AutoMotifArtifacts"); + }, + }, + ], + Teleop: [ + { + key: "TeleopArtifactsClassified", + label: "Average Amt Of Artifacts Classified Teleop", + }, + { + label: "> Min Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMinimum( + quantitativeReports!, + "TeleopArtifactsClassified", + ); + }, + }, + { + label: "> Max Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMaximum( + quantitativeReports!, + "TeleopArtifactsClassified", + ); + }, + }, + { + key: "TeleopOverflowArtifacts", + label: "Average Amt Of Overflow Artifacts Classified Teleop", + }, + { + label: "> Min Overflow Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "TeleopOverflowArtifacts"); + }, + }, + { + label: "> Max Overflow Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "TeleopOverflowArtifacts"); + }, + }, + { + key: "TeleopMotifArtifacts", + label: "Average Amt Of Motif Artifacts Classified Teleop", + }, + { + label: "> Min Motif Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "TeleopMotifArtifacts"); + }, + }, + { + label: "> Max Motif Artifacts Classified Teleop", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "TeleopMotifArtifacts"); + }, + }, + ], + }, + getGraphDots: function ( + quantitativeReports: Report[], + pitReport?: Pitreport | undefined, + ): Dot[] { + return []; + }, + }; const pitStatsLayout: PitStatsLayout ={} @@ -1986,7 +2101,8 @@ namespace Decode { "invert", getBadges, getAvgPoints, -} + ); +}; export const games: { [id in GameId]: Game } = Object.freeze({ [GameId.Reefscape]: Reefscape.game, From 611fc489a91a0ac7db24d4d1966da9c40a6bb410 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Wed, 19 Nov 2025 16:15:32 -0500 Subject: [PATCH 08/19] Added more pit stats! --- lib/Enums.ts | 7 +++++++ lib/games.ts | 25 ++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/Enums.ts b/lib/Enums.ts index c0391cc9..c70b203c 100644 --- a/lib/Enums.ts +++ b/lib/Enums.ts @@ -117,4 +117,11 @@ export namespace DecodeEnums{ Full = "Full", TwoBotPark = "Two Bot Park" } + + export enum AutoCapabilities { + NoAuto = "No Auto", + MovePastStart = "Move Past Start", + ScoreOneArtifact = "Score One Artifact", + ScoreMultipleArtifacts = "Score Multiple Artifacts" + } } \ No newline at end of file diff --git a/lib/games.ts b/lib/games.ts index 2e8389b7..036f3a9e 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1911,8 +1911,13 @@ namespace Decode { CanOpenGate: boolean = false; CanParkWithOtherBots: boolean = false; - PointsScoredAuto: number = 0; + ArtifactsScoredAuto: number = 0; AutoAccountsForMotif: boolean = false; + AutoCapablilities: DecodeEnums.AutoCapabilities = DecodeEnums.AutoCapabilities.NoAuto; + AutoStrategy: string = "" + + ArtifactsScoredTeleop: number = 0; + GameStrategy: string = "" } const pitReportLayout: FormLayoutProps = { @@ -1923,8 +1928,14 @@ namespace Decode { { key: "CanParkWithOtherBots", label: "Can Park With Other Bots?" }, ], Auto: [ - { key: "PointsScoredAuto", label: "Average Auto Points" }, + { key: "ArtifactsScoredAuto", label: "Average Auto Artifacts" }, { key: "AutoAccountsForMotif", label: "Auto Accounts For Motif?" }, + { key: "AutoCapablilities", label: "Other Auto Scoring Capabilities"}, + { key: "AutoStrategy", label: "Auto Strategy"} + ], + Teleop: [ + { key: "ArtifactsScoredTeleop", label: "Average Teleop Artifacts"}, + { key: "TeleopStrategy", label: "Teleop Strategy"}, ], }; @@ -2076,7 +2087,15 @@ namespace Decode { }, }; - const pitStatsLayout: PitStatsLayout ={} + const pitStatsLayout: PitStatsLayout ={ + overallSlideStats: [], + individualSlideStats: [], + robotCapabilities:[], + graphStat:{ + label: "TeleopArtifactsClassified", + key: "TeleopArtifactsClassified" + } + } function getBadges( pitReport: Pitreport | undefined, From dfeb5b9f8e4a6aea1fb0af9225e905eedf232ae0 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Wed, 19 Nov 2025 17:29:09 -0500 Subject: [PATCH 09/19] getBadges and pitStatsLayout finished --- lib/client/StatsMath.ts | 4 + lib/games.ts | 160 ++++++++++++++++++++++++++++++---------- 2 files changed, 127 insertions(+), 37 deletions(-) diff --git a/lib/client/StatsMath.ts b/lib/client/StatsMath.ts index 6fd009f7..280304b1 100644 --- a/lib/client/StatsMath.ts +++ b/lib/client/StatsMath.ts @@ -6,6 +6,10 @@ export const AmpAutoPoints = 2; export const AmpTeleopPoints = 1; export const TrapPoints = 5; +export const ArtifactPoints = 3; +export const MotifArtifactPoints = 5; +export const OverflowArtifactPoints = 1; + type Selector = ((r: T) => number) | (keyof T & string); function getSelection( diff --git a/lib/games.ts b/lib/games.ts index 036f3a9e..32cc14f2 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -22,10 +22,13 @@ import { GameId } from "./client/GameId"; import { AmpAutoPoints, AmpTeleopPoints, + ArtifactPoints, BooleanAverage, GetMinimum, MostCommonValue, + MotifArtifactPoints, NumericalTotal, + OverflowArtifactPoints, Round, SpeakerAutoPoints, SpeakerTeleopPoints, @@ -1901,7 +1904,8 @@ namespace Decode { TeleopOverflowArtifacts: number = 0; TeleopMotifArtifacts: number = 0; - EndgameParkStatus: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; + EndgameParkStatus: DecodeEnums.EndgameParkStatus = + DecodeEnums.EndgameParkStatus.No; EndgameDefenseStatus: Defense = Defense.None; } @@ -1913,11 +1917,11 @@ namespace Decode { ArtifactsScoredAuto: number = 0; AutoAccountsForMotif: boolean = false; - AutoCapablilities: DecodeEnums.AutoCapabilities = DecodeEnums.AutoCapabilities.NoAuto; - AutoStrategy: string = "" + AutoCapablilities: DecodeEnums.AutoCapabilities = + DecodeEnums.AutoCapabilities.NoAuto; + AutoStrategy: string = ""; - ArtifactsScoredTeleop: number = 0; - GameStrategy: string = "" + GameStrategy: string = ""; } const pitReportLayout: FormLayoutProps = { @@ -1930,44 +1934,44 @@ namespace Decode { Auto: [ { key: "ArtifactsScoredAuto", label: "Average Auto Artifacts" }, { key: "AutoAccountsForMotif", label: "Auto Accounts For Motif?" }, - { key: "AutoCapablilities", label: "Other Auto Scoring Capabilities"}, - { key: "AutoStrategy", label: "Auto Strategy"} - ], - Teleop: [ - { key: "ArtifactsScoredTeleop", label: "Average Teleop Artifacts"}, - { key: "TeleopStrategy", label: "Teleop Strategy"}, + { key: "AutoCapablilities", label: "Other Auto Scoring Capabilities" }, + { key: "AutoStrategy", label: "Auto Strategy" }, ], + Teleop: [{ key: "TeleopStrategy", label: "Teleop Strategy" }], }; const quantitativeReportLayout: FormLayoutProps = { Auto: [ - { key: "AutoMovedPastStart", label: "Moved Past Starting line"}, + { key: "AutoMovedPastStart", label: "Moved Past Starting line" }, [ [ - { key: "AutoArtifactsClassified", label: "Artifacts Classified (Auto)"} - ], - [ - { key: "AutoOverflowArtifacts", label: "Overflow Artifacts (Auto)"} + { + key: "AutoArtifactsClassified", + label: "Artifacts Classified (Auto)", + }, ], - [ - { key: "AutoMotifArtifacts", label: "Motif Artifacts (Auto)"} - ] - ] + [{ key: "AutoOverflowArtifacts", label: "Overflow Artifacts (Auto)" }], + [{ key: "AutoMotifArtifacts", label: "Motif Artifacts (Auto)" }], + ], ], Teleop: [ [ [ - { key: "TeleopArtifactsClassified", label: "Artifacts Classified (Teleop)"} + { + key: "TeleopArtifactsClassified", + label: "Artifacts Classified (Teleop)", + }, ], [ - { key: "TeleopOverflowArtifacts", label: "Overflow Artifacts (Teleop)"} + { + key: "TeleopOverflowArtifacts", + label: "Overflow Artifacts (Teleop)", + }, ], - [ - { key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)"} - ] - ] + [{ key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)" }], + ], ], - "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"] + "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"], }; const statsLayout: StatsLayout = { @@ -2087,21 +2091,103 @@ namespace Decode { }, }; - const pitStatsLayout: PitStatsLayout ={ - overallSlideStats: [], - individualSlideStats: [], - robotCapabilities:[], - graphStat:{ + const pitStatsLayout: PitStatsLayout = { + overallSlideStats: [ + { label: "Artifacts Scored Auto", key: "ArtifactsScoredAuto" }, + ], + individualSlideStats: [ + { + label: "Average Auto Points", + get: ( + pitReport: Pitreport | undefined, + quantitativeReports: Report[] | undefined, + ) => { + if (!quantitativeReports) { + return 0; + } + + const Artifacts = + NumericalTotal("AutoArtifactsClassified", quantitativeReports) * + ArtifactPoints; + + const MotifArtifacts = + NumericalTotal("AutoMotifArtifacts", quantitativeReports) * + MotifArtifactPoints; + + const OverflowArtifacts = + NumericalTotal("AutoOverflowArtifacts", quantitativeReports) * + OverflowArtifactPoints; + + return ( + (Artifacts + MotifArtifacts + OverflowArtifacts) / + quantitativeReports.length + ); + }, + }, + { + label: "Average Teleop Points", + get: ( + pitReport: Pitreport | undefined, + quantitativeReports: Report[] | undefined, + ) => { + if (!quantitativeReports) { + return 0; + } + + const Artifacts = + NumericalTotal("TeleopArtifactsClassified", quantitativeReports) * + ArtifactPoints; + + const MotifArtifacts = + NumericalTotal("TeleopMotifArtifacts", quantitativeReports) * + MotifArtifactPoints; + + const OverflowArtifacts = + NumericalTotal("TeleopOverflowArtifacts", quantitativeReports) * + OverflowArtifactPoints; + + return ( + (Artifacts + MotifArtifacts + OverflowArtifacts) / + quantitativeReports.length + ); + }, + }, + ], + robotCapabilities: [ + { key: "CanScoreClassifier", label: "Can Score Classifier?" }, + { key: "CanScoreDepot", label: "Can Score Depot?" }, + { key: "CanOpenGate", label: "Can Open Gate?" }, + { key: "CanParkWithOtherBots", label: "Can Park With Other Bots" }, + ], + graphStat: { label: "TeleopArtifactsClassified", - key: "TeleopArtifactsClassified" - } - } + key: "TeleopArtifactsClassified", + }, + }; function getBadges( pitReport: Pitreport | undefined, quantitativeReports: Report[] | undefined, card: boolean, - ) {} + ) { + const badges: Badge[] = getBaseBadges(pitReport, quantitativeReports); + + if (pitReport?.data?.CanOpenGate) + badges.push({ text: "Can Open Gate", color: "info" }); + if (pitReport?.data?.CanScoreDepot) + badges.push({ text: "Can Score Depot", color: "secondary" }); + if (pitReport?.data?.CanScoreClassifier) + badges.push({ text: "Can Score Classifier", color: "primary" }); + if (pitReport?.data?.CanParkWithOtherBots) + badges.push({ text: "Can Double Park", color: "success" }); + + if ( + !(pitReport?.data?.CanScoreDepot || pitReport?.data?.CanScoreClassifier) + ) + badges.push({ text: "Cannot Score", color: "warning" }); + + return badges; + } function getAvgPoints(reports: Report[] | undefined) {} @@ -2121,7 +2207,7 @@ namespace Decode { getBadges, getAvgPoints, ); -}; +} export const games: { [id in GameId]: Game } = Object.freeze({ [GameId.Reefscape]: Reefscape.game, From 1968a99e0acc655fb8c50363a9c35d56389365d9 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Thu, 20 Nov 2025 16:24:20 -0500 Subject: [PATCH 10/19] getAvgPoints and the inclusion of the depot --- lib/client/StatsMath.ts | 1 + lib/games.ts | 60 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/lib/client/StatsMath.ts b/lib/client/StatsMath.ts index 280304b1..61b49d71 100644 --- a/lib/client/StatsMath.ts +++ b/lib/client/StatsMath.ts @@ -9,6 +9,7 @@ export const TrapPoints = 5; export const ArtifactPoints = 3; export const MotifArtifactPoints = 5; export const OverflowArtifactPoints = 1; +export const DepotArtifactPoints = 1; type Selector = ((r: T) => number) | (keyof T & string); diff --git a/lib/games.ts b/lib/games.ts index 32cc14f2..4639f9ee 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -24,6 +24,7 @@ import { AmpTeleopPoints, ArtifactPoints, BooleanAverage, + DepotArtifactPoints, GetMinimum, MostCommonValue, MotifArtifactPoints, @@ -1903,6 +1904,7 @@ namespace Decode { TeleopArtifactsClassified: number = 0; TeleopOverflowArtifacts: number = 0; TeleopMotifArtifacts: number = 0; + TeleopDepotArtifacts: number = 0; EndgameParkStatus: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; @@ -1969,6 +1971,7 @@ namespace Decode { }, ], [{ key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)" }], + [{ key: "TeleopDepotArtifacts", label: "Depot Artifacts (Teleop)" }], ], ], "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"], @@ -2081,6 +2084,22 @@ namespace Decode { return GetMaximum(quantitativeReports!, "TeleopMotifArtifacts"); }, }, + { + key: "TeleopDepotArtifacts", + label: "Average Amt of Artifacts In Depot Teleop", + }, + { + label: "> Min Depot Artifacts Teleop", + get(pitData, quantitativeReports) { + return GetMinimum(quantitativeReports!, "TeleopDepotArtifacts"); + }, + }, + { + label: "> Max Depot Artifacts Teleop", + get(pitData, quantitativeReports) { + return GetMaximum(quantitativeReports!, "TeleopDepotArtifacts"); + }, + }, ], }, getGraphDots: function ( @@ -2146,8 +2165,12 @@ namespace Decode { NumericalTotal("TeleopOverflowArtifacts", quantitativeReports) * OverflowArtifactPoints; + const DepotArtifacts = + NumericalTotal("TeleopDepotArtifacts", quantitativeReports) * + DepotArtifactPoints; + return ( - (Artifacts + MotifArtifacts + OverflowArtifacts) / + (Artifacts + MotifArtifacts + OverflowArtifacts + DepotArtifacts) / quantitativeReports.length ); }, @@ -2189,7 +2212,40 @@ namespace Decode { return badges; } - function getAvgPoints(reports: Report[] | undefined) {} + function getAvgPoints(reports: Report[] | undefined) { + if (!reports) return 0; + + let totalPoints = 0; + + for (const report of reports.map((r) => r.data)) { + switch (report.EndgameParkStatus) { + case DecodeEnums.EndgameParkStatus.No: + break; + case DecodeEnums.EndgameParkStatus.Partial: + totalPoints += 5; + break; + case DecodeEnums.EndgameParkStatus.Full: + totalPoints += 10; + break; + case DecodeEnums.EndgameParkStatus.TwoBotPark: + totalPoints += 20; + break; + } + + totalPoints += + (report.AutoArtifactsClassified + report.TeleopArtifactsClassified) * + ArtifactPoints; + totalPoints += + (report.AutoMotifArtifacts + report.TeleopMotifArtifacts) * + MotifArtifactPoints; + totalPoints += + (report.AutoOverflowArtifacts + report.TeleopOverflowArtifacts) * + OverflowArtifactPoints; + totalPoints += report.TeleopDepotArtifacts * DepotArtifactPoints; + } + + return totalPoints / Math.max(reports.length, 1); + } export const game = new Game( "Decode", From aa05b897fe08cb9f5d77d7711aede908bfb83cb2 Mon Sep 17 00:00:00 2001 From: Teknosquad5219 Date: Tue, 9 Dec 2025 15:44:00 -0500 Subject: [PATCH 11/19] Updates --- package-lock.json | 1264 ++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 783 insertions(+), 483 deletions(-) diff --git a/package-lock.json b/package-lock.json index e1d3d706..a9f01f2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "minimongo": "^7.0.0", "mongo-anywhere": "^1.1.15", "mongodb": "^5.0.0", - "next": "^15.2.4", + "next": "^15.2.6", "next-auth": "^4.24.11", "next-seo": "^6.6.0", "omit-call-signature": "^1.0.15", @@ -107,13 +107,15 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" @@ -338,19 +340,21 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -365,109 +369,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@babel/types": "^7.28.5" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -710,14 +633,15 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -754,14 +678,14 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -793,6 +717,16 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", @@ -1260,104 +1194,564 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", + "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" } }, - "node_modules/@eslint/js": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", - "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", - "dev": true, - "license": "MIT", + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", - "dependencies": { - "@eslint/core": "^0.10.0", - "levn": "^0.4.1" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "license": "Apache-2.0", + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@emnapi/runtime": "^1.7.0" }, "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12.22" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", - "license": "Apache-2.0", + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18.18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", "cpu": [ "x64" ], @@ -1453,10 +1847,11 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1933,9 +2328,9 @@ } }, "node_modules/@next/env": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", - "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.7.tgz", + "integrity": "sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -1976,9 +2371,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", - "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.7.tgz", + "integrity": "sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==", "cpu": [ "arm64" ], @@ -1992,9 +2387,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", - "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.7.tgz", + "integrity": "sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==", "cpu": [ "x64" ], @@ -2008,9 +2403,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", - "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.7.tgz", + "integrity": "sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==", "cpu": [ "arm64" ], @@ -2024,9 +2419,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", - "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.7.tgz", + "integrity": "sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==", "cpu": [ "arm64" ], @@ -2040,9 +2435,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", - "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.7.tgz", + "integrity": "sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==", "cpu": [ "x64" ], @@ -2056,9 +2451,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", - "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.7.tgz", + "integrity": "sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==", "cpu": [ "x64" ], @@ -2072,9 +2467,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", - "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.7.tgz", + "integrity": "sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==", "cpu": [ "arm64" ], @@ -2088,9 +2483,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", - "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.7.tgz", + "integrity": "sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==", "cpu": [ "x64" ], @@ -2174,13 +2569,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", - "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.52.0" + "playwright": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -2324,16 +2719,16 @@ } }, "node_modules/@serwist/build": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@serwist/build/-/build-9.0.13.tgz", - "integrity": "sha512-Hoc6llxFmnsE8z5Cs95UmRRhRyoNh44OdrMWWPPX8BpW19z0CK/qnBquptjyBIe46jjoOxsPHK0Tt7oZOV4Mbw==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@serwist/build/-/build-9.2.3.tgz", + "integrity": "sha512-UU38GDsTerzoCRDIT5v62W/CcTMLfGZm/tAa+u8XLBU0y0f2aJ2GCfsHnI1eXhEuWvt4Y7Imx/uG2ww2KWIBWQ==", "license": "MIT", "dependencies": { "common-tags": "1.8.2", - "glob": "10.4.5", + "glob": "10.5.0", "pretty-bytes": "6.1.1", "source-map": "0.8.0-beta.0", - "zod": "3.24.2" + "zod": "4.1.12" }, "engines": { "node": ">=18.0.0" @@ -2348,18 +2743,18 @@ } }, "node_modules/@serwist/build/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@serwist/build/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -2395,6 +2790,7 @@ "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" @@ -2430,18 +2826,18 @@ } }, "node_modules/@serwist/next": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@serwist/next/-/next-9.0.13.tgz", - "integrity": "sha512-nI2N4oSEHJGH0YUsE4m1obPfudO3DZ/pXiHPaisw+28YjgkMqD6ePfhzeHGO07ahPmIUiyHca9VNO8OfarbQ1Q==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@serwist/next/-/next-9.2.3.tgz", + "integrity": "sha512-sbStIaen8H6ZhNCtfxAuZ2haujJe8nPFRBiq5KQFYYi5iyFrDGLpYICmRTBP6Oc1pQBmsAqbBZzIjjC60d+7zg==", "license": "MIT", "dependencies": { - "@serwist/build": "9.0.13", - "@serwist/webpack-plugin": "9.0.13", - "@serwist/window": "9.0.13", - "chalk": "5.4.1", - "glob": "10.4.5", - "serwist": "9.0.13", - "zod": "3.24.2" + "@serwist/build": "9.2.3", + "@serwist/webpack-plugin": "9.2.3", + "@serwist/window": "9.2.3", + "chalk": "5.6.2", + "glob": "10.5.0", + "serwist": "9.2.3", + "zod": "4.1.12" }, "engines": { "node": ">=18.0.0" @@ -2457,17 +2853,18 @@ } }, "node_modules/@serwist/next/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@serwist/next/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -2477,9 +2874,10 @@ } }, "node_modules/@serwist/next/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -2499,6 +2897,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2510,14 +2909,14 @@ } }, "node_modules/@serwist/webpack-plugin": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@serwist/webpack-plugin/-/webpack-plugin-9.0.13.tgz", - "integrity": "sha512-Z+Eve8dckM2FulRCa7Cj7VCF3EOP7QkRA76tI742olF7J2sYZSm3t9Ex13jDxTMmYiU1AxLq6V6gEMIdRAetVw==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@serwist/webpack-plugin/-/webpack-plugin-9.2.3.tgz", + "integrity": "sha512-y1Ag1a7LARo/LtPVRSrfGO5PG4BZdc1NiMGAq+CGlBH/PJa7RQimo4iq9C94pjxusEsP4yHnsDQ06+GVTQ6gww==", "license": "MIT", "dependencies": { - "@serwist/build": "9.0.13", + "@serwist/build": "9.2.3", "pretty-bytes": "6.1.1", - "zod": "3.24.2" + "zod": "4.1.12" }, "engines": { "node": ">=18.0.0" @@ -2536,13 +2935,13 @@ } }, "node_modules/@serwist/window": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@serwist/window/-/window-9.0.13.tgz", - "integrity": "sha512-Cf3RizPuFInDcLt0P1Y5QzG1sA5mW131/PZfMYE3yBuNUSGNgOQGlYuLdwDOWPHgECYoVb/da8pspdQNKs0O5g==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@serwist/window/-/window-9.2.3.tgz", + "integrity": "sha512-6bK01QAaFI+oXTmDSQHvsw0kTTNlj79PFkox+0Z9XYNqTVLoXY9C6BFmZNvxNxEinOqCSm7cms4I5V54E9/1XA==", "license": "MIT", "dependencies": { "@types/trusted-types": "2.0.7", - "serwist": "9.0.13" + "serwist": "9.2.3" }, "peerDependencies": { "typescript": ">=5.0.0" @@ -2582,11 +2981,6 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" - }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", @@ -3693,9 +4087,10 @@ "integrity": "sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3788,17 +4183,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -4047,20 +4431,6 @@ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4077,17 +4447,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4352,15 +4711,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/decache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz", - "integrity": "sha512-p7D6wJ5EJFFq1CcF2lu1XeqKFLBob8jRQGNAvFLTsV3CbSKBl3VtliAVlUIGz2i9H6kEFnI2Amaft5ZopIG2Fw==", - "optional": true, - "dependencies": { - "find": "^0.2.4" - } - }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4448,9 +4798,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "optional": true, "engines": { @@ -5193,9 +5543,9 @@ } }, "node_modules/eslint-config-next/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -5747,10 +6097,11 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -5778,15 +6129,6 @@ "node": ">=8" } }, - "node_modules/find": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz", - "integrity": "sha512-7a4/LCiInB9xYMnAUEjLilL9FKclwbwK7VlXw+h5jMvT2TDFeYFCHM24O1XdnC/on/hx8mxVO3FTQkyHZnOghQ==", - "optional": true, - "dependencies": { - "traverse-chain": "~0.1.0" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -5852,6 +6194,20 @@ "node": "*" } }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/formidable": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", @@ -6295,9 +6651,9 @@ } }, "node_modules/idb": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.2.tgz", - "integrity": "sha512-CX70rYhx7GDDQzwwQMDwF6kDRQi5vVs6khHUumDrMecBylKkwvZ8HWvKV08AGb7VbpoGCWUQ4aHzNDgoUiOIUg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.3.tgz", + "integrity": "sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg==", "license": "ISC" }, "node_modules/idb-wrapper": { @@ -6394,10 +6750,14 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } }, "node_modules/is-array-buffer": { "version": "3.0.4", @@ -7847,9 +8207,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -8359,15 +8719,13 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/next": { - "version": "15.2.4", - "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", - "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", + "version": "15.5.7", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.7.tgz", + "integrity": "sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==", "license": "MIT", "dependencies": { - "@next/env": "15.2.4", - "@swc/counter": "0.1.3", + "@next/env": "15.5.7", "@swc/helpers": "0.5.15", - "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" @@ -8379,19 +8737,19 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.2.4", - "@next/swc-darwin-x64": "15.2.4", - "@next/swc-linux-arm64-gnu": "15.2.4", - "@next/swc-linux-arm64-musl": "15.2.4", - "@next/swc-linux-x64-gnu": "15.2.4", - "@next/swc-linux-x64-musl": "15.2.4", - "@next/swc-win32-arm64-msvc": "15.2.4", - "@next/swc-win32-x64-msvc": "15.2.4", - "sharp": "^0.33.5" + "@next/swc-darwin-arm64": "15.5.7", + "@next/swc-darwin-x64": "15.5.7", + "@next/swc-linux-arm64-gnu": "15.5.7", + "@next/swc-linux-arm64-musl": "15.5.7", + "@next/swc-linux-x64-gnu": "15.5.7", + "@next/swc-linux-x64-musl": "15.5.7", + "@next/swc-win32-arm64-msvc": "15.5.7", + "@next/swc-win32-x64-msvc": "15.5.7", + "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", + "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", @@ -8413,9 +8771,9 @@ } }, "node_modules/next-auth": { - "version": "4.24.11", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.11.tgz", - "integrity": "sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==", + "version": "4.24.13", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.13.tgz", + "integrity": "sha512-sgObCfcfL7BzIK76SS5TnQtc3yo2Oifp/yIpfv6fMfeBOiBJkDWF3A2y9+yqnmJ4JKc2C+nMjSjmgDeTwgN1rQ==", "license": "ISC", "dependencies": { "@babel/runtime": "^7.20.13", @@ -8429,9 +8787,9 @@ "uuid": "^8.3.2" }, "peerDependencies": { - "@auth/core": "0.34.2", - "next": "^12.2.5 || ^13 || ^14 || ^15", - "nodemailer": "^6.6.5", + "@auth/core": "0.34.3", + "next": "^12.2.5 || ^13 || ^14 || ^15 || ^16", + "nodemailer": "^7.0.7", "react": "^17.0.2 || ^18 || ^19", "react-dom": "^17.0.2 || ^18 || ^19" }, @@ -8521,17 +8879,6 @@ "node": ">=0.6.0" } }, - "node_modules/nodemailer": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", - "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", - "license": "MIT-0", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9026,13 +9373,13 @@ } }, "node_modules/playwright": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", - "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.52.0" + "playwright-core": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -9045,9 +9392,9 @@ } }, "node_modules/playwright-core": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", - "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -9780,19 +10127,6 @@ "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/request/node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -9901,9 +10235,10 @@ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, "node_modules/rollbar": { - "version": "2.26.4", - "resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.26.4.tgz", - "integrity": "sha512-JKmrj6riYm9ZPJisgxljgH4uCsvjMHDHXrinDF7aAFaP+eoF51HomVPtLcDTYLsrJ568aKVNLUhedFajONBwSg==", + "version": "2.26.5", + "resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.26.5.tgz", + "integrity": "sha512-4Of0ALl5+CU2glyDy5dWMRRy9Ty81DrY2r46ucbqjtCikbgHoWJNGXbQUWpDaLxsc8Q71LT/yj1bPb9NHbJIFQ==", + "license": "MIT", "dependencies": { "async": "~3.2.3", "console-polyfill": "0.3.0", @@ -9912,9 +10247,6 @@ "lru-cache": "~2.2.1", "request-ip": "~3.3.0", "source-map": "^0.5.7" - }, - "optionalDependencies": { - "decache": "^3.0.5" } }, "node_modules/rollbar/node_modules/lru-cache": { @@ -10036,9 +10368,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10048,12 +10380,12 @@ } }, "node_modules/serwist": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.0.13.tgz", - "integrity": "sha512-BF3bmzYdOVT2lF3iHV0044NqTO6q6GAiqrYpc7L9EPYQXZHOy22WajKaHLvCdvpm2Jpji4SsxUL8/uC1WSCZ5g==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/serwist/-/serwist-9.2.3.tgz", + "integrity": "sha512-menorUH09SpLvU7R25TvG0TuQ12MUDpQ5NKGohbtREF8YI+0D++Abn59XCmvvMp2n740rBizIkeqWq0m6U+++g==", "license": "MIT", "dependencies": { - "idb": "8.0.2" + "idb": "8.0.3" }, "peerDependencies": { "typescript": ">=5.0.0" @@ -10096,16 +10428,16 @@ } }, "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", "hasInstallScript": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -10114,25 +10446,30 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" } }, "node_modules/shebang-command": { @@ -10182,23 +10519,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "optional": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT", - "optional": true - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -10250,15 +10570,16 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -10349,14 +10670,6 @@ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -10629,19 +10942,21 @@ } }, "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -10794,15 +11109,6 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10837,12 +11143,6 @@ "node": ">=12" } }, - "node_modules/traverse-chain": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", - "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==", - "optional": true - }, "node_modules/ts-api-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", @@ -11657,9 +11957,9 @@ } }, "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 93953def..bcef52a9 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "minimongo": "^7.0.0", "mongo-anywhere": "^1.1.15", "mongodb": "^5.0.0", - "next": "^15.2.4", + "next": "^15.2.6", "next-auth": "^4.24.11", "next-seo": "^6.6.0", "omit-call-signature": "^1.0.15", From 8ae79981d174c2ea3aee2a523840e643d471f2df Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Fri, 2 Jan 2026 16:17:45 -0500 Subject: [PATCH 12/19] Random updates that don't fix the larger issue --- components/Container.tsx | 2 +- components/TeamCard.tsx | 4 +-- package-lock.json | 54 ++++++++++++++++++++++++++++++++-------- package.json | 3 ++- pages/profile.tsx | 2 +- 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/components/Container.tsx b/components/Container.tsx index 0cc63f42..e9bb660a 100644 --- a/components/Container.tsx +++ b/components/Container.tsx @@ -317,7 +317,7 @@ export default function Container(props: ContainerProps) { "w-16 h-16 btn btn-ghost " + (selected ? "border-2 border-accent" : "border-2") } - key={team._id.toString()} + key={team._id?.toString()} onClick={() => { setSelectedTeamIndex(index); }} diff --git a/components/TeamCard.tsx b/components/TeamCard.tsx index 1475843f..6982a443 100644 --- a/components/TeamCard.tsx +++ b/components/TeamCard.tsx @@ -6,13 +6,13 @@ export default function TeamCard(props: { team: Team | undefined }) { return (

{team?.league} {team?.alliance ? "Alliance" : "Team"}{" "} {team?.number} -{" "} - {team?.users.length} members + {team?.users?.length} members

); diff --git a/package-lock.json b/package-lock.json index a9f01f2b..c112372b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "next": "^15.2.6", "next-auth": "^4.24.11", "next-seo": "^6.6.0", + "nodemailer": "^7.0.12", "omit-call-signature": "^1.0.15", "react": "18.3.1", "react-beautiful-dnd": "^13.1.1", @@ -60,7 +61,7 @@ "@playwright/test": "^1.52.0", "@types/formidable": "^3.4.5", "@types/jest": "^29.5.14", - "@types/node": "^22.13.13", + "@types/node": "^22.19.3", "@types/react": "^18.3.8", "autoprefixer": "^10.4.21", "cross-env": "^7.0.3", @@ -135,6 +136,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", @@ -2306,8 +2308,7 @@ "node_modules/@kurkle/color": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", - "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", - "peer": true + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.9", @@ -2574,6 +2575,7 @@ "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "playwright": "1.57.0" }, @@ -2588,6 +2590,7 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -3382,12 +3385,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz", - "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==", + "version": "22.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", + "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", "license": "MIT", + "peer": true, "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/p5": { @@ -3512,6 +3516,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4135,6 +4140,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -4595,7 +4601,8 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "peer": true }, "node_modules/culori": { "version": "3.3.0", @@ -5271,6 +5278,7 @@ "version": "9.18.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -5444,6 +5452,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.17.0", "@typescript-eslint/types": "8.17.0", @@ -5650,6 +5659,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -7286,6 +7296,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -8178,6 +8189,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "devOptional": true, + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -8635,6 +8647,7 @@ "version": "5.9.2", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz", "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==", + "peer": true, "dependencies": { "bson": "^5.5.0", "mongodb-connection-string-url": "^2.6.0", @@ -8723,6 +8736,7 @@ "resolved": "https://registry.npmjs.org/next/-/next-15.5.7.tgz", "integrity": "sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==", "license": "MIT", + "peer": true, "dependencies": { "@next/env": "15.5.7", "@swc/helpers": "0.5.15", @@ -8775,6 +8789,7 @@ "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.13.tgz", "integrity": "sha512-sgObCfcfL7BzIK76SS5TnQtc3yo2Oifp/yIpfv6fMfeBOiBJkDWF3A2y9+yqnmJ4JKc2C+nMjSjmgDeTwgN1rQ==", "license": "ISC", + "peer": true, "dependencies": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", @@ -8879,6 +8894,16 @@ "node": ">=0.6.0" } }, + "node_modules/nodemailer": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.12.tgz", + "integrity": "sha512-H+rnK5bX2Pi/6ms3sN4/jRQvYSMltV6vqup/0SFOrxYYY/qoNvhXPlYq3e+Pm9RFJRwrMGbMIwi81M4dxpomhA==", + "license": "MIT-0", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9456,6 +9481,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -9584,6 +9610,7 @@ "version": "10.24.3", "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -9758,6 +9785,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -9866,6 +9894,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -11225,6 +11254,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -11426,6 +11456,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11468,9 +11499,10 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" }, "node_modules/unified-api": { "version": "1.1.4", diff --git a/package.json b/package.json index bcef52a9..0c6a7baf 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "next": "^15.2.6", "next-auth": "^4.24.11", "next-seo": "^6.6.0", + "nodemailer": "^7.0.12", "omit-call-signature": "^1.0.15", "react": "18.3.1", "react-beautiful-dnd": "^13.1.1", @@ -71,7 +72,7 @@ "@playwright/test": "^1.52.0", "@types/formidable": "^3.4.5", "@types/jest": "^29.5.14", - "@types/node": "^22.13.13", + "@types/node": "^22.19.3", "@types/react": "^18.3.8", "autoprefixer": "^10.4.21", "cross-env": "^7.0.3", diff --git a/pages/profile.tsx b/pages/profile.tsx index c2f74d32..7a7746bd 100644 --- a/pages/profile.tsx +++ b/pages/profile.tsx @@ -198,7 +198,7 @@ export default function Profile(props: { teamList: Team[] }) { From 8fc11dafb77cfff1c95d55c54c1030b0271388f8 Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Mon, 12 Jan 2026 18:14:06 -0500 Subject: [PATCH 13/19] Ruined the post match screen??? --- lib/api/ClientApi.ts | 2 +- lib/games.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/api/ClientApi.ts b/lib/api/ClientApi.ts index e3d5c45b..25fc2f5c 100644 --- a/lib/api/ClientApi.ts +++ b/lib/api/ClientApi.ts @@ -214,7 +214,7 @@ export default class ClientApi extends NextApiTemplate { if (number <= 0) { return res.status(200).send(undefined); } - + console.log("Getting autofill data for team:", number, league); res .status(200) .send( diff --git a/lib/games.ts b/lib/games.ts index 4639f9ee..20edf131 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1970,6 +1970,8 @@ namespace Decode { label: "Overflow Artifacts (Teleop)", }, ], + ], + [ [{ key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)" }], [{ key: "TeleopDepotArtifacts", label: "Depot Artifacts (Teleop)" }], ], From 81b7608eb26e94f3168cde6aa28a364ea4272243 Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Mon, 12 Jan 2026 20:47:02 -0500 Subject: [PATCH 14/19] Reorganized quantdata --- lib/games.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/games.ts b/lib/games.ts index 20edf131..faa1ba1f 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1970,10 +1970,20 @@ namespace Decode { label: "Overflow Artifacts (Teleop)", }, ], + [ + { + key: "TeleopMotifArtifacts", + label: "Motif Artifacts (Teleop)", + }, + ], ], [ - [{ key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)" }], - [{ key: "TeleopDepotArtifacts", label: "Depot Artifacts (Teleop)" }], + [ + { + key: "TeleopDepotArtifacts", + label: "Depot Artifacts (Teleop)", + }, + ], ], ], "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"], From 94d508b6fe15f30c07fa10f7a1f218c331d0fd6b Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Wed, 14 Jan 2026 18:07:06 -0500 Subject: [PATCH 15/19] Fixed post match page, added field images --- lib/Enums.ts | 4 ++-- lib/Layout.ts | 6 ++++++ lib/games.ts | 23 ++++++----------------- public/fields/DecodeBlue.png | Bin 0 -> 59451 bytes public/fields/DecodeRed.png | Bin 0 -> 59451 bytes 5 files changed, 14 insertions(+), 19 deletions(-) create mode 100644 public/fields/DecodeBlue.png create mode 100644 public/fields/DecodeRed.png diff --git a/lib/Enums.ts b/lib/Enums.ts index c70b203c..5818c67a 100644 --- a/lib/Enums.ts +++ b/lib/Enums.ts @@ -115,13 +115,13 @@ export namespace DecodeEnums{ No = "No", Partial = "Partial", Full = "Full", - TwoBotPark = "Two Bot Park" + TwoBotPark = "Two Bot Park", } export enum AutoCapabilities { NoAuto = "No Auto", MovePastStart = "Move Past Start", ScoreOneArtifact = "Score One Artifact", - ScoreMultipleArtifacts = "Score Multiple Artifacts" + ScoreMultipleArtifacts = "Score Multiple Artifacts", } } \ No newline at end of file diff --git a/lib/Layout.ts b/lib/Layout.ts index 01ef80d1..da676ca8 100644 --- a/lib/Layout.ts +++ b/lib/Layout.ts @@ -10,6 +10,7 @@ import { IntoTheDeepEnums, FtcDrivetrain, ReefscapeEnums, + DecodeEnums, } from "./Enums"; import { PitReportData, QuantData, Pitreport, Report, League } from "./Types"; @@ -217,6 +218,8 @@ export function keyToType( ReefscapeEnums.Climbing, ReefscapeEnums.DriveThroughDeepCage, ReefscapeEnums.EndgameClimbStatus, + DecodeEnums.AutoCapabilities, + DecodeEnums.EndgameParkStatus, ]; if (key === "Defense") return Defense; @@ -231,6 +234,9 @@ export function keyToType( if (key == "DriveThroughDeepCage") return ReefscapeEnums.DriveThroughDeepCage; if (key == "EndgameClimbStatus") return ReefscapeEnums.EndgameClimbStatus; + if(key == "EndgameParkStatusDecode") return DecodeEnums.EndgameParkStatus; + if(key == "AutoAbilities") return DecodeEnums.AutoCapabilities; + for (const e of enums) { if (Object.values(e).includes(exampleData[key])) return e; } diff --git a/lib/games.ts b/lib/games.ts index faa1ba1f..4c2aebb0 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1906,9 +1906,8 @@ namespace Decode { TeleopMotifArtifacts: number = 0; TeleopDepotArtifacts: number = 0; - EndgameParkStatus: DecodeEnums.EndgameParkStatus = - DecodeEnums.EndgameParkStatus.No; - EndgameDefenseStatus: Defense = Defense.None; + EndgameParkStatusDecode: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; + EndgameDefense: Defense = Defense.None; } export class PitData extends PitReportData { @@ -1919,11 +1918,9 @@ namespace Decode { ArtifactsScoredAuto: number = 0; AutoAccountsForMotif: boolean = false; - AutoCapablilities: DecodeEnums.AutoCapabilities = + AutoAbilities: DecodeEnums.AutoCapabilities = DecodeEnums.AutoCapabilities.NoAuto; - AutoStrategy: string = ""; - - GameStrategy: string = ""; + } const pitReportLayout: FormLayoutProps = { @@ -1936,10 +1933,8 @@ namespace Decode { Auto: [ { key: "ArtifactsScoredAuto", label: "Average Auto Artifacts" }, { key: "AutoAccountsForMotif", label: "Auto Accounts For Motif?" }, - { key: "AutoCapablilities", label: "Other Auto Scoring Capabilities" }, - { key: "AutoStrategy", label: "Auto Strategy" }, + { key: "AutoAbilities", label: "Other Auto Scoring Capabilities" }, ], - Teleop: [{ key: "TeleopStrategy", label: "Teleop Strategy" }], }; const quantitativeReportLayout: FormLayoutProps = { @@ -1963,8 +1958,6 @@ namespace Decode { key: "TeleopArtifactsClassified", label: "Artifacts Classified (Teleop)", }, - ], - [ { key: "TeleopOverflowArtifacts", label: "Overflow Artifacts (Teleop)", @@ -1975,10 +1968,6 @@ namespace Decode { key: "TeleopMotifArtifacts", label: "Motif Artifacts (Teleop)", }, - ], - ], - [ - [ { key: "TeleopDepotArtifacts", label: "Depot Artifacts (Teleop)", @@ -1986,7 +1975,7 @@ namespace Decode { ], ], ], - "Post Match": ["EndgameDefenseStatus", "EndgameParkStatus"], + Endgame: ["Defense", "EndgameParkStatusDecode"], }; const statsLayout: StatsLayout = { diff --git a/public/fields/DecodeBlue.png b/public/fields/DecodeBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..4ece8d32406511ee9e3fe87602226b3e7949d554 GIT binary patch literal 59451 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 r!Ev~bkvepH;^EQ~uc7^1c65b{Wd7iZB-53 Date: Wed, 14 Jan 2026 23:31:57 +0000 Subject: [PATCH 16/19] 1.3.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c112372b..9d3d3dc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sj3", - "version": "1.3.4", + "version": "1.3.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sj3", - "version": "1.3.4", + "version": "1.3.5", "license": "CC BY-NC-SA 4.0", "dependencies": { "dependencies": "^0.0.1", diff --git a/package.json b/package.json index 0c6a7baf..41c2f309 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sj3", - "version": "1.3.4", + "version": "1.3.5", "private": true, "repository": "https://github.com/Decatur-Robotics/Gearbox", "license": "CC BY-NC-SA 4.0", From 75715b22cd94cdcc652b99b266209292cdc60df5 Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Wed, 14 Jan 2026 18:34:11 -0500 Subject: [PATCH 17/19] Prettier --- lib/Enums.ts | 4 ++-- lib/games.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Enums.ts b/lib/Enums.ts index 5818c67a..79c45916 100644 --- a/lib/Enums.ts +++ b/lib/Enums.ts @@ -110,7 +110,7 @@ export namespace ReefscapeEnums { } } -export namespace DecodeEnums{ +export namespace DecodeEnums { export enum EndgameParkStatus { No = "No", Partial = "Partial", @@ -124,4 +124,4 @@ export namespace DecodeEnums{ ScoreOneArtifact = "Score One Artifact", ScoreMultipleArtifacts = "Score Multiple Artifacts", } -} \ No newline at end of file +} diff --git a/lib/games.ts b/lib/games.ts index 4c2aebb0..839e2a4b 100644 --- a/lib/games.ts +++ b/lib/games.ts @@ -1906,7 +1906,8 @@ namespace Decode { TeleopMotifArtifacts: number = 0; TeleopDepotArtifacts: number = 0; - EndgameParkStatusDecode: DecodeEnums.EndgameParkStatus = DecodeEnums.EndgameParkStatus.No; + EndgameParkStatusDecode: DecodeEnums.EndgameParkStatus = + DecodeEnums.EndgameParkStatus.No; EndgameDefense: Defense = Defense.None; } @@ -1920,7 +1921,6 @@ namespace Decode { AutoAccountsForMotif: boolean = false; AutoAbilities: DecodeEnums.AutoCapabilities = DecodeEnums.AutoCapabilities.NoAuto; - } const pitReportLayout: FormLayoutProps = { From f7efa2d3c289f770ddcbd8b74f0fe0b0f196d59c Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Fri, 16 Jan 2026 17:27:04 -0500 Subject: [PATCH 18/19] Made all of the fake users named after numbers since the website we were using before changed --- .env.test | 8 +++++--- lib/dev/FakeData.ts | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.env.test b/.env.test index f373e69d..29d9257d 100644 --- a/.env.test +++ b/.env.test @@ -1,4 +1,4 @@ -NEXTAUTH_URL=http://localhost:3000/ +NEXTAUTH_URL=http://localhost:3000/api/ NEXTAUTH_SECRET=testsecret NEXT_PUBLIC_API_URL=/api/ @@ -9,12 +9,14 @@ TOA_URL=https://example.com TOA_APP_ID=123 TOA_KEY=456 +API_URL=/api/ +API_KEY=gearboxiscool + DEFAULT_IMAGE=https://example.com/default.jpg BASE_URL_FOR_PLAYWRIGHT=http://localhost:3000/ ENABLE_TEST_SIGNIN_ROUTE=true -FALLBACK_MONGODB_URI=mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000 - +FALLBACK_MONGODB_URI=mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.5.10 ENV_FILE=.env.test DB=playwright_tests diff --git a/lib/dev/FakeData.ts b/lib/dev/FakeData.ts index 9782f082..c9e71d49 100644 --- a/lib/dev/FakeData.ts +++ b/lib/dev/FakeData.ts @@ -9,8 +9,8 @@ import { ObjectId } from "bson"; import CollectionId from "../client/CollectionId"; import DbInterface from "../client/dbinterfaces/DbInterface"; -const firstNameMaleURL = "https://www.randomlists.com/data/names-male.json"; -const firstNameFemaleURL = "https://www.randomlists.com/data/names-female.json"; +const firstNameMaleURL = "https://www.randomlists.com/male-names"; +const firstNameFemaleURL = "https://www.randomlists.com/female-names"; var cachedFirstNames: string[] = []; var cachedLastNames: string[] = []; @@ -43,7 +43,7 @@ export async function fakeUser( db: DbInterface, teamId: ObjectId | undefined, ): Promise { - const name = await randomName(); + const name = String(Math.random() * 101); const user = new User( name, "totallyrealemail@gmail.com", From 615915ca0ef4d43a5350ad84fb9431fcee04c508 Mon Sep 17 00:00:00 2001 From: Tr01ler Date: Fri, 16 Jan 2026 17:37:43 -0500 Subject: [PATCH 19/19] Prettier claims to have changed 176 files despite having only actually changed 2. --- .github/workflows/increment_version.yml | 2 +- LICENSE.md | 314 ++++++++++++------------ eslint.config.mjs | 2 +- lib/Layout.ts | 4 +- lib/client/GameId.ts | 2 +- styles/globals.css | 21 +- 6 files changed, 168 insertions(+), 177 deletions(-) diff --git a/.github/workflows/increment_version.yml b/.github/workflows/increment_version.yml index a021286e..46ca6d3d 100644 --- a/.github/workflows/increment_version.yml +++ b/.github/workflows/increment_version.yml @@ -10,7 +10,7 @@ on: jobs: increment: runs-on: ubuntu-latest - if: + if: steps: - name: Checkout uses: actions/checkout@v4 diff --git a/LICENSE.md b/LICENSE.md index cbe5ad16..11976172 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -67,90 +67,88 @@ Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - Section 1 -- Definitions. - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - l. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - +a. Adapted Material means material subject to Copyright and Similar +Rights that is derived from or based upon the Licensed Material +and in which the Licensed Material is translated, altered, +arranged, transformed, or otherwise modified in a manner requiring +permission under the Copyright and Similar Rights held by the +Licensor. For purposes of this Public License, where the Licensed +Material is a musical work, performance, or sound recording, +Adapted Material is always produced where the Licensed Material is +synched in timed relation with a moving image. + +b. Adapter's License means the license You apply to Your Copyright +and Similar Rights in Your contributions to Adapted Material in +accordance with the terms and conditions of this Public License. + +c. BY-NC-SA Compatible License means a license listed at +creativecommons.org/compatiblelicenses, approved by Creative +Commons as essentially the equivalent of this Public License. + +d. Copyright and Similar Rights means copyright and/or similar rights +closely related to copyright including, without limitation, +performance, broadcast, sound recording, and Sui Generis Database +Rights, without regard to how the rights are labeled or +categorized. For purposes of this Public License, the rights +specified in Section 2(b)(1)-(2) are not Copyright and Similar +Rights. + +e. Effective Technological Measures means those measures that, in the +absence of proper authority, may not be circumvented under laws +fulfilling obligations under Article 11 of the WIPO Copyright +Treaty adopted on December 20, 1996, and/or similar international +agreements. + +f. Exceptions and Limitations means fair use, fair dealing, and/or +any other exception or limitation to Copyright and Similar Rights +that applies to Your use of the Licensed Material. + +g. License Elements means the license attributes listed in the name +of a Creative Commons Public License. The License Elements of this +Public License are Attribution, NonCommercial, and ShareAlike. + +h. Licensed Material means the artistic or literary work, database, +or other material to which the Licensor applied this Public +License. + +i. Licensed Rights means the rights granted to You subject to the +terms and conditions of this Public License, which are limited to +all Copyright and Similar Rights that apply to Your use of the +Licensed Material and that the Licensor has authority to license. + +j. Licensor means the individual(s) or entity(ies) granting rights +under this Public License. + +k. NonCommercial means not primarily intended for or directed towards +commercial advantage or monetary compensation. For purposes of +this Public License, the exchange of the Licensed Material for +other material subject to Copyright and Similar Rights by digital +file-sharing or similar means is NonCommercial provided there is +no payment of monetary compensation in connection with the +exchange. + +l. Share means to provide material to the public by any means or +process that requires permission under the Licensed Rights, such +as reproduction, public display, public performance, distribution, +dissemination, communication, or importation, and to make material +available to the public including in ways that members of the +public may access the material from a place and at a time +individually chosen by them. + +m. Sui Generis Database Rights means rights other than copyright +resulting from Directive 96/9/EC of the European Parliament and of +the Council of 11 March 1996 on the legal protection of databases, +as amended and/or succeeded, as well as other essentially +equivalent rights anywhere in the world. + +n. You means the individual or entity exercising the Licensed Rights +under this Public License. Your has a corresponding meaning. Section 2 -- Scope. - a. License grant. +a. License grant. 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, @@ -211,7 +209,7 @@ Section 2 -- Scope. the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - b. Other rights. +b. Other rights. 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, @@ -233,13 +231,12 @@ Section 2 -- Scope. the Licensed Material is used other than for NonCommercial purposes. - Section 3 -- License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. - a. Attribution. +a. Attribution. 1. If You Share the Licensed Material (including in modified form), You must: @@ -280,7 +277,7 @@ following conditions. information required by Section 3(a)(1)(A) to the extent reasonably practicable. - b. ShareAlike. +b. ShareAlike. In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. @@ -299,69 +296,66 @@ following conditions. Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - Section 4 -- Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; +a. for the avoidance of doubt, Section 2(a)(1) grants You the right +to extract, reuse, reproduce, and Share all or a substantial +portion of the contents of the database for NonCommercial purposes +only; - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and +b. if You include all or a substantial portion of the database +contents in a database in which You have Sui Generis Database +Rights, then the database in which You have Sui Generis Database +Rights (but not its individual contents) is Adapted Material, +including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. +c. You must comply with the conditions in Section 3(a) if You Share +all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - Section 5 -- Disclaimer of Warranties and Limitation of Liability. - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - +a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE +EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS +AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF +ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, +IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, +WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, +ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT +KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT +ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + +b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE +TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, +NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, +INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, +COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR +USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN +ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR +DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR +IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + +c. The disclaimer of warranties and limitation of liability provided +above shall be interpreted in a manner that, to the extent +possible, most closely approximates an absolute disclaimer and +waiver of all liability. Section 6 -- Term and Termination. - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. +a. This Public License applies for the term of the Copyright and +Similar Rights licensed here. However, if You fail to comply with +this Public License, then Your rights under this Public License +terminate automatically. - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: +b. Where Your right to use the Licensed Material has terminated under +Section 6(a), it reinstates: 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the @@ -373,47 +367,45 @@ Section 6 -- Term and Termination. right the Licensor may have to seek remedies for Your violations of this Public License. - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. +c. For the avoidance of doubt, the Licensor may also offer the +Licensed Material under separate terms or conditions or stop +distributing the Licensed Material at any time; however, doing so +will not terminate this Public License. +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public +License. Section 7 -- Other Terms and Conditions. - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. +a. The Licensor shall not be bound by any additional or different +terms or conditions communicated by You unless expressly agreed. +b. Any arrangements, understandings, or agreements regarding the +Licensed Material not stated herein are separate from and +independent of the terms and conditions of this Public License. Section 8 -- Interpretation. - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. +a. For the avoidance of doubt, this Public License does not, and +shall not be interpreted to, reduce, limit, restrict, or impose +conditions on any use of the Licensed Material that could lawfully +be made without permission under this Public License. + +b. To the extent possible, if any provision of this Public License is +deemed unenforceable, it shall be automatically reformed to the +minimum extent necessary to make it enforceable. If the provision +cannot be reformed, it shall be severed from this Public License +without affecting the enforceability of the remaining terms and +conditions. + +c. No term or condition of this Public License will be waived and no +failure to comply consented to unless expressly agreed to by the +Licensor. + +d. Nothing in this Public License constitutes or may be interpreted +as a limitation upon, or waiver of, any privileges and immunities +that apply to the Licensor or You, including from the legal +processes of any jurisdiction or authority. ======================================================================= diff --git a/eslint.config.mjs b/eslint.config.mjs index e0462f2b..e8345844 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -20,7 +20,7 @@ const config = [ }, }, { - // Ignores has to go in its own config object + // Ignores has to go in its own config object ignores: ["coverage/**/*", ".next/**/*"], }, ]; diff --git a/lib/Layout.ts b/lib/Layout.ts index da676ca8..841b9625 100644 --- a/lib/Layout.ts +++ b/lib/Layout.ts @@ -234,8 +234,8 @@ export function keyToType( if (key == "DriveThroughDeepCage") return ReefscapeEnums.DriveThroughDeepCage; if (key == "EndgameClimbStatus") return ReefscapeEnums.EndgameClimbStatus; - if(key == "EndgameParkStatusDecode") return DecodeEnums.EndgameParkStatus; - if(key == "AutoAbilities") return DecodeEnums.AutoCapabilities; + if (key == "EndgameParkStatusDecode") return DecodeEnums.EndgameParkStatus; + if (key == "AutoAbilities") return DecodeEnums.AutoCapabilities; for (const e of enums) { if (Object.values(e).includes(exampleData[key])) return e; diff --git a/lib/client/GameId.ts b/lib/client/GameId.ts index 7eb6402a..2dcbdb15 100644 --- a/lib/client/GameId.ts +++ b/lib/client/GameId.ts @@ -3,7 +3,7 @@ export enum GameId { CenterStage = "CenterStage", IntoTheDeep = "IntoTheDeep", Reefscape = "Reefscape", - Decode = "Decode" + Decode = "Decode", } export const defaultGameId = GameId.Reefscape; diff --git a/styles/globals.css b/styles/globals.css index d1cd3c0e..df011e23 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -2,27 +2,26 @@ @tailwind components; @tailwind utilities; - @layer components { - .background-grid { - background-size: 50px 50px; - background-image: - linear-gradient(to right, white 1px, transparent 1px), - linear-gradient(to bottom, white 1px, transparent 1px); - } + .background-grid { + background-size: 50px 50px; + background-image: + linear-gradient(to right, white 1px, transparent 1px), + linear-gradient(to bottom, white 1px, transparent 1px); + } } @keyframes float { 0% { - box-shadow: 0 5px 15px 0px rgba(0,0,0,0.6); + box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); transform: translatey(0px); } 50% { - box-shadow: 0 25px 15px 0px rgba(0,0,0,0.2); + box-shadow: 0 25px 15px 0px rgba(0, 0, 0, 0.2); transform: translatey(-20px); } 100% { - box-shadow: 0 5px 15px 0px rgba(0,0,0,0.6); + box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6); transform: translatey(0px); } } @@ -56,4 +55,4 @@ border-radius: 10px; } -*/ \ No newline at end of file +*/