diff --git a/components/forms/Sliders.tsx b/components/forms/Sliders.tsx
index 59619448..019949cf 100644
--- a/components/forms/Sliders.tsx
+++ b/components/forms/Sliders.tsx
@@ -9,26 +9,29 @@ export type SliderProps = {
dataKey: keyof QuantData;
};
export default function Slider(props: SliderProps) {
- const keys = Object.keys(props.possibleValues);
- const num = keys.indexOf(props.value);
+ const values = Object.values(props.possibleValues);
+ const num = values.indexOf(props.value);
return (
diff --git a/components/stats/SmallGraph.tsx b/components/stats/SmallGraph.tsx
index ca66df4f..cdb0a348 100644
--- a/components/stats/SmallGraph.tsx
+++ b/components/stats/SmallGraph.tsx
@@ -87,15 +87,6 @@ export default function SmallGraph(props: {
return 1;
}
} else if (key === "LevelClimbed") {
- ///switch (data) {
- //case ReefscapeEnums.EndgameClimbStatus.None:
- //return 0;
- //case ReefscapeEnums.EndgameClimbStatus.Park:
- //return 0.33;
- //case ReefscapeEnums.EndgameClimbStatus.High:
- //return 0.66;
- //case ReefscapeEnums.EndgameClimbStatus.Low:
- //return 1;
switch (data) {
case RebuiltEnums.LevelClimbed.No:
return 0;
@@ -106,6 +97,29 @@ export default function SmallGraph(props: {
case RebuiltEnums.LevelClimbed.Third:
return 1;
}
+ } else if (key === "TotalFuelPoints") {
+ switch (data) {
+ default:
+ return (
+ data["AutoFuelPointsOne"] +
+ data["FuelPointsOne"] +
+ (data["AutoFuelPointsFive"] + data["FuelPointsFive"]) * 5 +
+ (data["AutoFuelPointsTen"] + data["FuelPointsTen"]) * 10
+ );
+ }
+ } else if (key === "DriverSkill") {
+ switch (data) {
+ case RebuiltEnums.DriverSkill.One:
+ return 1;
+ case RebuiltEnums.DriverSkill.Two:
+ return 2;
+ case RebuiltEnums.DriverSkill.Three:
+ return 3;
+ case RebuiltEnums.DriverSkill.Four:
+ return 4;
+ case RebuiltEnums.DriverSkill.Five:
+ return 5;
+ }
}
return data;
}
diff --git a/lib/Auth.ts b/lib/Auth.ts
index 813f972d..665bbb57 100644
--- a/lib/Auth.ts
+++ b/lib/Auth.ts
@@ -54,7 +54,7 @@ export const AuthenticationOptions: AuthOptions = {
},
}),
SlackProvider({
- clientId: process.env.NEXT_PUBLIC_SLACK_CLIENT_ID as string,
+ clientId: process.env.SLACK_CLIENT_ID as string,
clientSecret: process.env.SLACK_CLIENT_SECRET as string,
allowDangerousEmailAccountLinking: true,
profile: async (profile) => {
diff --git a/lib/Enums.ts b/lib/Enums.ts
index 0014013b..ee263c5e 100644
--- a/lib/Enums.ts
+++ b/lib/Enums.ts
@@ -4,13 +4,13 @@ export enum Defense {
Full = "Full",
}
-export enum FTCEndgame {
+/*export enum FTCEndgame {
None = "None",
Parked = "Parked",
TouchingTheLowerBar = "Touching the Lower Bar",
LowClimb = "Low Climb",
HighClimb = "High Climb",
-}
+}*/
export enum IntakeTypes {
None = "None",
@@ -34,7 +34,6 @@ export enum Motors {
CIMs = "CIM",
Krakens = "Krakens",
Falcons = "Falcons",
- Talons = "Talons",
Neos = "Neos",
}
@@ -136,6 +135,13 @@ export namespace RebuiltEnums {
Second = "Second",
Third = "Third",
}
+ export enum DriverSkill {
+ One = "1",
+ Two = "2",
+ Three = "3",
+ Four = "4",
+ Five = "5",
+ }
}
export namespace DecodeEnums {
diff --git a/lib/Layout.ts b/lib/Layout.ts
index ccd8d0f9..5f66b2a2 100644
--- a/lib/Layout.ts
+++ b/lib/Layout.ts
@@ -224,30 +224,39 @@ export function keyToType(
RebuiltEnums.DriveOverBump,
RebuiltEnums.DriveUnderTrench,
RebuiltEnums.LevelClimbed,
+ RebuiltEnums.DriverSkill,
DecodeEnums.AutoStatus,
DecodeEnums.EndgameParkStatus,
];
- if (key === "Defense") return Defense;
- if (key === "swerveLevel") return SwerveLevel;
-
- if (key === "StartedWith") return IntoTheDeepEnums.StartedWith;
- if (key === "EndgameLevelClimbed")
- return IntoTheDeepEnums.EndgameLevelClimbed;
-
- if (key == "AutoCapabilities") return ReefscapeEnums.AutoCapabilities;
- if (key == "Climbing") return ReefscapeEnums.Climbing;
- if (key == "DriveThroughDeepCage") return ReefscapeEnums.DriveThroughDeepCage;
- if (key == "EndgameClimbStatus") return ReefscapeEnums.EndgameClimbStatus;
-
- //if (key == "AutoAbilities") return RebuiltEnums.AutoAbilities;
- if (key == "ClimbingCapabilities") return RebuiltEnums.ClimbingCapabilities;
- if (key == "DriveOverBump") return RebuiltEnums.DriveOverBump;
- if (key == "DiveUnderTrench") return RebuiltEnums.DriveUnderTrench;
- if (key == "LevelClimbed") return RebuiltEnums.LevelClimbed;
+ // Resolve by field name first. Values such as "None" occur in several enums.
+ const enumByKey: Record = {
+ Defense,
+ EndgameDefenseStatus: Defense,
+ EndgameDefense: Defense,
+ intakeType: IntakeTypes,
+ swerveLevel: SwerveLevel,
+ StartedWith: IntoTheDeepEnums.StartedWith,
+ EndgameLevelClimbed: IntoTheDeepEnums.EndgameLevelClimbed,
+ AutoCapabilities: ReefscapeEnums.AutoCapabilities,
+ Climbing: ReefscapeEnums.Climbing,
+ DriveThroughDeepCage: ReefscapeEnums.DriveThroughDeepCage,
+ EndgameClimbStatus: ReefscapeEnums.EndgameClimbStatus,
+ ClimbingCapabilities: RebuiltEnums.ClimbingCapabilities,
+ DriveOverBump: RebuiltEnums.DriveOverBump,
+ DriveUnderTrench: RebuiltEnums.DriveUnderTrench,
+ LevelClimbed: RebuiltEnums.LevelClimbed,
+ DriverSkill: RebuiltEnums.DriverSkill,
+ EndgameParkStatusDecode: DecodeEnums.EndgameParkStatus,
+ AutoStatus: DecodeEnums.AutoStatus,
+ Motors,
+ };
- if (key == "EndgameParkStatusDecode") return DecodeEnums.EndgameParkStatus;
- if (key == "AutoStatus") return DecodeEnums.AutoStatus;
+ if (key === "drivetrain")
+ return league === League.FRC ? FrcDrivetrain : FtcDrivetrain;
+ if (key === "FrcDrivetrain") return FrcDrivetrain;
+ if (key === "FtcDrivetrain") return FtcDrivetrain;
+ if (enumByKey[key]) return enumByKey[key];
for (const e of enums) {
if (Object.values(e).includes(exampleData[key])) return e;
diff --git a/lib/Types.ts b/lib/Types.ts
index 8127ae02..e8c13946 100644
--- a/lib/Types.ts
+++ b/lib/Types.ts
@@ -383,7 +383,7 @@ export abstract class PitReportData {
image: string = "/robot.jpg";
drivetrain: FrcDrivetrain = FrcDrivetrain.Tank;
- motorType: Motors = Motors.Talons;
+ motorType: Motors = Motors.Krakens;
swerveLevel: SwerveLevel = SwerveLevel.None;
comments: string = "";
}
diff --git a/lib/games.ts b/lib/games.ts
index 33bfe09e..969311eb 100644
--- a/lib/games.ts
+++ b/lib/games.ts
@@ -1906,10 +1906,13 @@ export namespace Rebuilt {
FuelPointsFive: number = 0;
FuelPointsTen: number = 0;
+ TotalFuelScored: number = 0;
+
AutoClimbedLevelOne: boolean = false;
- EngameDefenseStatus: Defense = Defense.None;
+ Defense: Defense = Defense.None;
LevelClimbed: RebuiltEnums.LevelClimbed = RebuiltEnums.LevelClimbed.No;
+ DriverSkill: RebuiltEnums.DriverSkill = RebuiltEnums.DriverSkill.One;
}
export class PitData extends PitReportData {
CanDriveOverBump: boolean = false;
@@ -1919,7 +1922,6 @@ export namespace Rebuilt {
RobotWeight: number = 0;
RobotWidth: number = 0;
RobotLength: number = 0;
- AutoAbilities: string = "";
ClimbingCapabilities: RebuiltEnums.ClimbingCapabilities =
RebuiltEnums.ClimbingCapabilities.No;
}
@@ -1930,8 +1932,11 @@ export namespace Rebuilt {
{ key: "CanDeClimb", label: "Can De-Climb?" },
{ key: "ClimbingCapabilities", label: "Climbing?" },
{ key: "HopperVolume", label: "Hopper Volume?" },
+ { key: "RobotWeight", label: "Robot Weight?" },
+ { key: "RobotWidth", label: "Robot Width?" },
+ { key: "RobotLength", label: "Robot Length?" },
],
- Auto: [{ key: "AutoAbilities", label: "Auto Capabilities?" }],
+ //Auto: [{ key: "AutoAbilities", label: "Auto Capabilities?" }],
};
const quantitativeReportLayout: FormLayoutProps = {
Auto: [
@@ -1979,7 +1984,7 @@ export namespace Rebuilt {
],
],
],
- "Post Match": ["LevelClimbed", "EngameDefenseStatus"],
+ "Post Match": ["LevelClimbed", "EndgameDefenseStatus", "DriverSkill"],
};
const statsLayout: StatsLayout = {
diff --git a/package-lock.json b/package-lock.json
index 2194d31c..faf5ed9c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51,7 +51,6 @@
"string-similarity-js": "^2.1.4",
"ts-node": "^10.9.2",
"tsx": "^4.19.3",
- "typescript": "5.8.3",
"unified-api-nextjs": "^1.1.3"
},
"devDependencies": {
@@ -71,7 +70,8 @@
"prettier": "3.5.3",
"serwist": "^9.0.13",
"tailwindcss": "^3.4.17",
- "ts-jest": "^29.2.5"
+ "ts-jest": "^29.2.5",
+ "typescript": "^5.8.3"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -2329,9 +2329,9 @@
}
},
"node_modules/@next/env": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.12.tgz",
- "integrity": "sha512-pUvdJN1on574wQHjaBfNGDt9Mz5utDSZFsIIQkMzPgNS8ZvT4H2mwOrOIClwsQOb6EGx5M76/CZr6G8i6pSpLg==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.14.tgz",
+ "integrity": "sha512-aXeirLYuASxEgi4X4WhfXsShCFxWDfNn/8ZeC5YXAS2BB4A8FJi1kwwGL6nvMVboE7fZCzmJPNdMvVHc8JpaiA==",
"license": "MIT"
},
"node_modules/@next/eslint-plugin-next": {
@@ -2372,9 +2372,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.12.tgz",
- "integrity": "sha512-RnRjBtH8S8eXCpUNkQ+543DUc7ys8y15VxmFU9HRqlo9BG3CcBUiwNtF8SNoi2xvGCVJq1vl2yYq+3oISBS0Zg==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.14.tgz",
+ "integrity": "sha512-Y9K6SPzobnZvrRDPO2s0grgzC+Egf0CqfbdvYmQVaztV890zicw8Z8+4Vqw8oPck8r1TjUHxVh8299Cg4TrxXg==",
"cpu": [
"arm64"
],
@@ -2388,9 +2388,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.12.tgz",
- "integrity": "sha512-nqa9/7iQlboF1EFtNhWxQA0rQstmYRSBGxSM6g3GxvxHxcoeqVXfGNr9stJOme674m2V7r4E3+jEhhGvSQhJRA==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.14.tgz",
+ "integrity": "sha512-aNnkSMjSFRTOmkd7qoNI2/rETQm/vKD6c/Ac9BZGa9CtoOzy3c2njgz7LvebQJ8iPxdeTuGnAjagyis8a9ifBw==",
"cpu": [
"x64"
],
@@ -2404,9 +2404,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.12.tgz",
- "integrity": "sha512-dCzAjqhDHwmoB2M4eYfVKqXs99QdQxNQVpftvP1eGVppamXh/OkDAwV737Zr0KPXEqRUMN4uCjh6mjO+XtF3Mw==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.14.tgz",
+ "integrity": "sha512-tjlpia+yStPRS//6sdmlVwuO1Rioern4u2onafa5n+h2hCS9MAvMXqpVbSrjgiEOoCs0nJy7oPOmWgtRRNSM5Q==",
"cpu": [
"arm64"
],
@@ -2420,9 +2420,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.12.tgz",
- "integrity": "sha512-+fpGWvQiITgf7PUtbWY1H7qUSnBZsPPLyyq03QuAKpVoTy/QUx1JptEDTQMVvQhvizCEuNLEeghrQUyXQOekuw==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.14.tgz",
+ "integrity": "sha512-8B8cngBaLadl5lbDRdxGCP1Lef8ipD6KlxS3v0ElDAGil6lafrAM3B258p1KJOglInCVFUjk751IXMr2ixeQOQ==",
"cpu": [
"arm64"
],
@@ -2436,9 +2436,9 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.12.tgz",
- "integrity": "sha512-jSLvgdRRL/hrFAPqEjJf1fFguC719kmcptjNVDJl26BnJIpjL3KH5h6mzR4mAweociLQaqvt4UyzfbFjgAdDcw==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.14.tgz",
+ "integrity": "sha512-bAS6tIAg8u4Gn3Nz7fCPpSoKAexEt2d5vn1mzokcqdqyov6ZJ6gu6GdF9l8ORFrBuRHgv3go/RfzYz5BkZ6YSQ==",
"cpu": [
"x64"
],
@@ -2452,9 +2452,9 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.12.tgz",
- "integrity": "sha512-/uaF0WfmYqQgLfPmN6BvULwxY0dufI2mlN2JbOKqqceZh1G4hjREyi7pg03zjfyS6eqNemHAZPSoP84x17vo6w==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.14.tgz",
+ "integrity": "sha512-mMxv/FcrT7Gfaq4tsR22l17oKWXZmH/lVqcvjX0kfp5I0lKodHYLICKPoX1KRnnE+ci6oIUdriUhuA3rBCDiSw==",
"cpu": [
"x64"
],
@@ -2468,9 +2468,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.12.tgz",
- "integrity": "sha512-xhsL1OvQSfGmlL5RbOmU+FV120urrgFpYLq+6U8C6KIym32gZT6XF/SDE92jKzzlPWskkbjOKCpqk5m4i8PEfg==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.14.tgz",
+ "integrity": "sha512-OTmiBlYThppnvnsqx0rBqjDRemlmIeZ8/o4zI7veaXoeO1PVHoyj2lfTfXTiiGjCyRDhA10y4h6ZvZvBiynr2g==",
"cpu": [
"arm64"
],
@@ -2484,9 +2484,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.12.tgz",
- "integrity": "sha512-Z1Dh6lhFkxvBDH1FoW6OU/L6prYwPSlwjLiZkExIAh8fbP6iI/M7iGTQAJPYJ9YFlWobCZ1PHbchFhFYb2ADkw==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.14.tgz",
+ "integrity": "sha512-+W7eFf3RS7m4G6tppVTOSyP9Y6FsJXfOuKzav1qKniiFm3KFByQfPEcouHdjlZmysl4zJGuGLQ/M9XyVeyeNEg==",
"cpu": [
"x64"
],
@@ -2745,9 +2745,9 @@
}
},
"node_modules/@serwist/build/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -2864,9 +2864,9 @@
}
},
"node_modules/@serwist/next/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -4112,9 +4112,9 @@
"integrity": "sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ=="
},
"node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
+ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -4731,11 +4731,6 @@
}
}
},
- "node_modules/debug/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
"node_modules/dedent": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz",
@@ -5567,9 +5562,9 @@
}
},
"node_modules/eslint-config-next/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -6121,9 +6116,9 @@
}
},
"node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6183,9 +6178,9 @@
}
},
"node_modules/flatted": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
- "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"license": "ISC"
},
"node_modules/for-each": {
@@ -8714,9 +8709,10 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/mz": {
"version": "2.7.0",
@@ -8752,12 +8748,12 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"node_modules/next": {
- "version": "15.5.12",
- "resolved": "https://registry.npmjs.org/next/-/next-15.5.12.tgz",
- "integrity": "sha512-Fi/wQ4Etlrn60rz78bebG1i1SR20QxvV8tVp6iJspjLUSHcZoeUXCt+vmWoEcza85ElZzExK/jJ/F6SvtGktjA==",
+ "version": "15.5.14",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.5.14.tgz",
+ "integrity": "sha512-M6S+4JyRjmKic2Ssm7jHUPkE6YUJ6lv4507jprsSZLulubz0ihO2E+S4zmQK3JZ2ov81JrugukKU4Tz0ivgqqQ==",
"license": "MIT",
"dependencies": {
- "@next/env": "15.5.12",
+ "@next/env": "15.5.14",
"@swc/helpers": "0.5.15",
"caniuse-lite": "^1.0.30001579",
"postcss": "8.4.31",
@@ -8770,14 +8766,14 @@
"node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "15.5.12",
- "@next/swc-darwin-x64": "15.5.12",
- "@next/swc-linux-arm64-gnu": "15.5.12",
- "@next/swc-linux-arm64-musl": "15.5.12",
- "@next/swc-linux-x64-gnu": "15.5.12",
- "@next/swc-linux-x64-musl": "15.5.12",
- "@next/swc-win32-arm64-msvc": "15.5.12",
- "@next/swc-win32-x64-msvc": "15.5.12",
+ "@next/swc-darwin-arm64": "15.5.14",
+ "@next/swc-darwin-x64": "15.5.14",
+ "@next/swc-linux-arm64-gnu": "15.5.14",
+ "@next/swc-linux-arm64-musl": "15.5.14",
+ "@next/swc-linux-x64-gnu": "15.5.14",
+ "@next/swc-linux-x64-musl": "15.5.14",
+ "@next/swc-win32-arm64-msvc": "15.5.14",
+ "@next/swc-win32-x64-msvc": "15.5.14",
"sharp": "^0.34.3"
},
"peerDependencies": {
@@ -9321,9 +9317,10 @@
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -10600,17 +10597,35 @@
}
},
"node_modules/socket.io-parser": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
- "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz",
+ "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==",
+ "license": "MIT",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
+ "debug": "~4.4.1"
},
"engines": {
"node": ">=10.0.0"
}
},
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/socks": {
"version": "2.8.7",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
@@ -10984,9 +10999,9 @@
}
},
"node_modules/sucrase/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11466,9 +11481,9 @@
}
},
"node_modules/typescript": {
- "version": "5.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
- "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@@ -11927,12 +11942,19 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
- "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+ "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
"engines": {
- "node": ">= 14"
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
}
},
"node_modules/yargs": {
diff --git a/package.json b/package.json
index 3b42e51d..40a90339 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,6 @@
"string-similarity-js": "^2.1.4",
"ts-node": "^10.9.2",
"tsx": "^4.19.3",
- "typescript": "5.8.3",
"unified-api-nextjs": "^1.1.3"
},
"devDependencies": {
@@ -82,6 +81,7 @@
"prettier": "3.5.3",
"serwist": "^9.0.13",
"tailwindcss": "^3.4.17",
- "ts-jest": "^29.2.5"
+ "ts-jest": "^29.2.5",
+ "typescript": "^5.8.3"
}
}
diff --git a/tests/unit/lib/Layout.test.ts b/tests/unit/lib/Layout.test.ts
index 3dcbb5ba..658875c2 100644
--- a/tests/unit/lib/Layout.test.ts
+++ b/tests/unit/lib/Layout.test.ts
@@ -35,6 +35,17 @@ test(`${keyToType.name}: Chooses FrcDrivetrain or FtcDrivetrain correctly`, () =
).toBe(FtcDrivetrain);
});
+test(`${keyToType.name}: Uses field names before ambiguous enum values`, () => {
+ expect(keyToType(League.FRC, "Defense", { Defense: Defense.None })).toBe(
+ Defense,
+ );
+ expect(
+ keyToType(League.FRC, "EndgameDefenseStatus", {
+ EndgameDefenseStatus: Defense.None,
+ }),
+ ).toBe(Defense);
+});
+
test(`${FormElement.name}.${FormElement.fromProps.name}: From key`, () => {
const exampleData = {
text: "string",
diff --git a/tsconfig.json b/tsconfig.json
index 8dff24bc..767b9419 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
{
"compilerOptions": {
- "target": "es5",
+ "target": "es2017",
"lib": ["dom", "dom.iterable", "esnext", "webworker"],
"allowJs": true,
"skipLibCheck": true,
@@ -9,12 +9,11 @@
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
- "moduleResolution": "node",
+ "moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
- "downlevelIteration": true,
"paths": {
"@/*": ["./*"]
}