From 1ea4ff72fd28b2d004a4df68cc3649cc9da65bda Mon Sep 17 00:00:00 2001 From: "Kalle (Sendou)" <38327916+Sendouc@users.noreply.github.com> Date: Wed, 5 Jan 2022 23:38:59 +0200 Subject: [PATCH] Fix ESLint complaints --- .eslintrc.js | 13 ++++++++++++- app/core/tournament/algorithms.test.ts | 4 ++-- app/core/tournament/bracket.test.ts | 2 +- app/core/tournament/bracket.ts | 4 +++- app/core/tournament/mapList.ts | 4 ++-- app/root.tsx | 2 +- .../to/$organization.$tournament/join-team.tsx | 11 +++++++++-- .../to/$organization.$tournament/manage-roster.tsx | 10 ++++++---- .../to/$organization.$tournament/map-pool.tsx | 2 +- app/routes/to/$organization.$tournament/start.tsx | 2 +- app/utils/db.server.ts | 1 + app/utils/index.ts | 2 +- cypress/support/index.ts | 2 +- prisma/seed/index.ts | 14 +++++++------- 14 files changed, 48 insertions(+), 25 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fca472f38..e93127662 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,17 @@ module.exports = { root: true, parser: "@typescript-eslint/parser", + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json"], + }, plugins: ["@typescript-eslint"], - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + ], + rules: { + "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], + }, }; diff --git a/app/core/tournament/algorithms.test.ts b/app/core/tournament/algorithms.test.ts index 5bf40ac62..a67da66bf 100644 --- a/app/core/tournament/algorithms.test.ts +++ b/app/core/tournament/algorithms.test.ts @@ -89,7 +89,7 @@ BracketPaths("Following winners", () => { let latest: Match = bracket16.winners[0]; let rounds = 0; - let roundIds = new Set(); + const roundIds = new Set(); while (latest) { rounds++; roundIds.add(latest.id); @@ -114,7 +114,7 @@ BracketPaths("Following losers", () => { let latest: Match = bracket16.winners[0]; let rounds = 0; let countWinnerDestNoLoserDest = 0; - let roundIds = new Set(); + const roundIds = new Set(); while (latest) { rounds++; roundIds.add(latest.id); diff --git a/app/core/tournament/bracket.test.ts b/app/core/tournament/bracket.test.ts index cc2d9f406..644457689 100644 --- a/app/core/tournament/bracket.test.ts +++ b/app/core/tournament/bracket.test.ts @@ -80,7 +80,7 @@ TournamentRoundsForDB("Generates rounds correctly", () => { const roundsCounted = countRounds(bracket); let max = -Infinity; let min = Infinity; - let uniqueParticipants = new Set(); + const uniqueParticipants = new Set(); for (const round of bracketForDb) { max = Math.max(max, round.position); diff --git a/app/core/tournament/bracket.ts b/app/core/tournament/bracket.ts index b6e713765..aec5e5b27 100644 --- a/app/core/tournament/bracket.ts +++ b/app/core/tournament/bracket.ts @@ -377,7 +377,9 @@ function resolveSide( const otherNumber = matchNumbers?.find((num) => num !== currentMatch.number); invariant( otherNumber, - `no otherNumber; matchNumbers length is not 2 was: ${matchNumbers?.length}` + `no otherNumber; matchNumbers length is not 2 was: ${ + matchNumbers?.length ?? "NO_LENGTH" + }` ); if (otherNumber > currentMatch.number) return "upperTeam"; diff --git a/app/core/tournament/mapList.ts b/app/core/tournament/mapList.ts index de02dfba0..646259a1a 100644 --- a/app/core/tournament/mapList.ts +++ b/app/core/tournament/mapList.ts @@ -77,7 +77,7 @@ export function generateMapListForRounds({ result = shuffle(result); } - let resultWithNoNull: Mode[] = []; + const resultWithNoNull: Mode[] = []; for (let i = 0; i < result.length; i++) { const element = result[i]; // Is SZ @@ -149,7 +149,7 @@ export function generateMapListForRounds({ } function resolveMaps(modes: Mode[]) { - let result: string[] = []; + const result: string[] = []; for (const mode of modes) { mapGenerator.next(); const nextMap = mapGenerator.next({ diff --git a/app/root.tsx b/app/root.tsx index ba3eff3a4..9c79bd092 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -28,7 +28,7 @@ export const loader: LoaderFunction = ({ context }) => { return { user: user ?? null, baseURL }; }; -export let unstable_shouldReload = () => false; +export const unstable_shouldReload = () => false; export default function App() { return ( diff --git a/app/routes/to/$organization.$tournament/join-team.tsx b/app/routes/to/$organization.$tournament/join-team.tsx index 00eec7bfa..db071ec03 100644 --- a/app/routes/to/$organization.$tournament/join-team.tsx +++ b/app/routes/to/$organization.$tournament/join-team.tsx @@ -9,6 +9,7 @@ import { useLocation, } from "remix"; import invariant from "tiny-invariant"; +import { z } from "zod"; import { Button } from "~/components/Button"; import { Catcher } from "~/components/Catcher"; import { @@ -32,6 +33,9 @@ export const action: ActionFunction = async ({ request, context, params }) => { typeof tournamentId === "string", "Invalid type for tournament id." ); + const parsedParams = z + .object({ organization: z.string(), tournament: z.string() }) + .parse(params); const user = requireUser(context); @@ -41,7 +45,9 @@ export const action: ActionFunction = async ({ request, context, params }) => { tournamentId: tournamentId, }); - return redirect(`/to/${params.organization}/${params.tournament}/teams`); + return redirect( + `/to/${parsedParams.organization}/${parsedParams.tournament}/teams` + ); }; const INVITE_CODE_LENGTH = 36; @@ -210,11 +216,12 @@ function Contents({ data }: { data: Data }) { ); - default: + default: { const exhaustive: never = data; throw new Error( `Unexpected join team status code: ${JSON.stringify(exhaustive)}` ); + } } } diff --git a/app/routes/to/$organization.$tournament/manage-roster.tsx b/app/routes/to/$organization.$tournament/manage-roster.tsx index 75ec4b873..d3f270061 100644 --- a/app/routes/to/$organization.$tournament/manage-roster.tsx +++ b/app/routes/to/$organization.$tournament/manage-roster.tsx @@ -147,7 +147,7 @@ export const loader: LoaderFunction = async ({ params, context }) => { ); const user = requireUser(context); - let [ownTeam, trustingUsers] = await Promise.all([ + const [ownTeam, trustingUsersAll] = await Promise.all([ ownTeamWithInviteCode({ organizationNameForUrl: params.organization, tournamentNameForUrl: params.tournament, @@ -156,7 +156,7 @@ export const loader: LoaderFunction = async ({ params, context }) => { getTrustingUsers(user.id), ]); - trustingUsers = trustingUsers.filter(({ trustGiver }) => { + const trustingUsers = trustingUsersAll.filter(({ trustGiver }) => { return !ownTeam.members.some(({ member }) => member.id === trustGiver.id); }); @@ -323,8 +323,10 @@ function CopyToClipboardButton({