Enable Biome rules 5

This commit is contained in:
Kalle
2026-09-06 15:03:09 +03:00
parent 71fb91935c
commit 16bbb4252b
198 changed files with 225 additions and 204 deletions

View File

@@ -2,7 +2,7 @@ import clsx from "clsx";
import * as React from "react";
import { abilities } from "~/modules/in-game-lists/abilities";
import type { BuildAbilitiesTupleWithUnknown } from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { abilityImageUrl } from "~/utils/urls";
import styles from "./AbilitiesSelector.module.css";
import { Ability } from "./Ability";

View File

@@ -24,7 +24,7 @@ ChartJS.register(
Tooltip,
);
export default function Chart({
export function Chart({
options,
containerClassName,
headerSuffix,

View File

@@ -8,7 +8,7 @@ import {
} from "~/components/elements/Button";
import { SendouDialog } from "~/components/elements/Dialog";
import { useHydrated } from "~/hooks/useHydrated";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { FormMessage } from "./FormMessage";
import { SubmitButton } from "./SubmitButton";

View File

@@ -8,7 +8,7 @@ import { SendouAnchoredPopover } from "./elements/Popover";
import { LocaleTime } from "./LocaleTime";
import styles from "./TimePopover.module.css";
export default function TimePopover({
export function TimePopover({
date,
options = {
minute: "numeric",

View File

@@ -1,7 +1,7 @@
import * as React from "react";
import { afterEach, describe, expect, test, vi } from "vitest";
import { render } from "vitest-browser-react";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { useCloseOnScrollClip } from "./useCloseOnScrollClip";
const PAGE_HEIGHT = 5000;

View File

@@ -1,4 +1,4 @@
import TimePopover from "~/components/TimePopover";
import { TimePopover } from "~/components/TimePopover";
interface MatchBannerScheduledTimeProps {
time: Date;

View File

@@ -14,7 +14,7 @@ import {
useUserCardData,
} from "~/features/user-card/components/UserCard";
import type { MainWeaponId } from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { CommonUser } from "~/utils/kysely.server";
import { tierImageUrl } from "~/utils/urls";
import { SendouTabPanel } from "../elements/Tabs";

View File

@@ -2,7 +2,7 @@ import { BarChart3, Key, ScrollText, Tally5, Users } from "lucide-react";
import type * as React from "react";
import { useTranslation } from "react-i18next";
import { useSearchParam } from "~/modules/search-params/hooks";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { SendouTab, SendouTabList, SendouTabs } from "../elements/Tabs";
import styles from "./MatchTabs.module.css";
import { matchPageSearchParams } from "./match-page-search-params";

View File

@@ -20,7 +20,7 @@ import {
canonicalWeaponSplId,
mainWeaponIds,
} from "~/modules/in-game-lists/weapon-ids";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { faker } from "./faker";
const STACKABLE_ABILITIES = abilities

View File

@@ -1,5 +1,5 @@
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { faker } from "../core/faker";
import * as showcaseNames from "../core/showcaseNames";
import * as CalendarEventFactory from "../factories/CalendarEventFactory";

View File

@@ -1,6 +1,6 @@
import { sub } from "date-fns";
import { FULL_GROUP_SIZE, SENDOUQ } from "~/features/sendouq/q-constants";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { faker } from "../core/faker";
import * as SQGroupFactory from "../factories/SQGroupFactory";
import * as SQMatchFactory from "../factories/SQMatchFactory";

View File

@@ -3,7 +3,7 @@ import {
nextNonCompletedVoting,
rangeToMonthYear,
} from "~/features/plus-voting/core";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
import { faker } from "../core/faker";

View File

@@ -1,6 +1,6 @@
import { db } from "~/db/sql";
import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
type InsertArgs = Omit<

View File

@@ -1,7 +1,7 @@
import { db } from "~/db/sql";
import { SENDOUQ_BEST_OF } from "~/features/sendouq/q-constants";
import * as SQMatchRepository from "~/features/sendouq-match/SQMatchRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { actAs } from "../core/actAs";
import { backdate } from "../core/backdate";
import { defineFactory } from "../core/defineFactory";

View File

@@ -1,7 +1,7 @@
import type { UserMapModePreferences } from "~/db/tables-json";
import * as TeamRepository from "~/features/team/TeamRepository.server";
import { type MemberRole, TEAM } from "~/features/team/team-constants";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { actAs } from "../core/actAs";
import { defineFactory } from "../core/defineFactory";
import * as ImageFactory from "./ImageFactory";

View File

@@ -17,7 +17,7 @@ import {
import { resolveMatchMapList } from "~/features/tournament-match/core/mapList.server";
import { reportScore } from "~/features/tournament-match/core/reportScore.server";
import * as TournamentMatchRepository from "~/features/tournament-match/TournamentMatchRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
import { eventDefaults } from "./CalendarEventFactory";
import * as TournamentTeamFactory from "./TournamentTeamFactory";

View File

@@ -1,6 +1,6 @@
import type { Tables } from "~/db/tables";
import * as TournamentOrganizationRepository from "~/features/tournament-organization/TournamentOrganizationRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
import * as ImageFactory from "./ImageFactory";

View File

@@ -1,5 +1,5 @@
import * as LiveStreamRepository from "~/features/live-streams/LiveStreamRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
type InsertArgs = Parameters<

View File

@@ -2,7 +2,7 @@ import { addDays } from "date-fns";
import type { MapPool } from "~/features/map-list-generator/core/map-pool";
import * as TournamentTeamRepository from "~/features/tournament/TournamentTeamRepository.server";
import * as TournamentLFGRepository from "~/features/tournament-lfg/TournamentLFGRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { actAs } from "../core/actAs";
import { backdate } from "../core/backdate";
import { defineFactory } from "../core/defineFactory";

View File

@@ -7,7 +7,7 @@ import { ADMIN_ID } from "~/features/admin/admin-constants";
import * as MatchProfileRepository from "~/features/match-profile/MatchProfileRepository.server";
import * as UserCardRepository from "~/features/user-card/UserCardRepository.server";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
ORG_ADMIN_TEST_ID,
REGULAR_USER_TEST_ID,

View File

@@ -1,5 +1,5 @@
import * as XRankPlacementRepository from "~/features/top-search/XRankPlacementRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { defineFactory } from "../core/defineFactory";
import { faker } from "../core/faker";
import * as SplatoonFaker from "../core/SplatoonFaker";

View File

@@ -7,7 +7,7 @@ import * as BuildRepository from "~/features/builds/BuildRepository.server";
import * as XRankPlacementRepository from "~/features/top-search/XRankPlacementRepository.server";
import * as TrophyRepository from "~/features/trophies/TrophyRepository.server";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
/**
* For a user switching Discord accounts: moves the new account's data onto the old user and deletes

View File

@@ -3,7 +3,7 @@ import * as LeaderboardRepository from "~/features/leaderboards/LeaderboardRepos
import * as Seasons from "~/features/mmr/core/Seasons";
import { seasonToVotingRange } from "~/features/plus-voting/core/voting-time";
import * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { userIsBanned } from "../../ban/core/banned.server";
export async function plusTiersFromVotingAndLeaderboard() {

View File

@@ -3,7 +3,7 @@ import { Readable } from "node:stream";
import { dataUrlToImageBuffer } from "~/features/img-upload/image-bytes.server";
import { uploadStreamToS3 } from "~/features/img-upload/s3.server";
import { shortNanoid } from "~/utils/id";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { previewUrl } from "./art-utils";
const ALLOWED_ART_IMAGE_EXTENSIONS = ["png", "jpeg", "webp"] as const;

View File

@@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { notFoundIfNullish } from "~/utils/remix.server";
import { articleBySlug } from "../core/bySlug.server";

View File

@@ -4,7 +4,7 @@ import { Link, useLoaderData } from "react-router";
import { LocaleTime } from "~/components/LocaleTime";
import { Main } from "~/components/Main";
import { Markdown } from "~/components/Markdown";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { SendouRouteHandle } from "~/utils/remix.server";
import {
ARTICLES_MAIN_PAGE,

View File

@@ -14,7 +14,7 @@ import {
databaseTimestampToJavascriptTimestamp,
dateToDatabaseTimestamp,
} from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { AVAILABILITY } from "../availability-constants";
import type {
BusyBlock,

View File

@@ -36,7 +36,7 @@ import { useDateTimeFormat } from "~/hooks/intl/useDateTimeFormat";
import { useHasPermission } from "~/modules/permissions/hooks";
import { useSearchParamsTyped } from "~/modules/search-params/hooks";
import { databaseTimestampToDate } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { SendouRouteHandle } from "~/utils/remix.server";
import { EVENTS_PAGE } from "~/utils/urls";
import { action } from "../actions/t.$customUrl.schedule.server";

View File

@@ -2,7 +2,7 @@ import type { ExpressionBuilder, NotNull } from "kysely";
import { db } from "~/db/sql";
import type { DB, TablesInsertable } from "~/db/tables";
import { sortBadgesByFavorites } from "~/features/user-page/core/badge-sorting.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
commonUserSelect,
jsonArrayFrom,

View File

@@ -4,7 +4,7 @@ import type {
AbilityWithUnknown,
BuildAbilitiesTupleWithUnknown,
} from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { MAIN_SLOT_AP, SUB_SLOT_AP } from "../analyzer-constants";
import type { AbilityPoints } from "../analyzer-types";

View File

@@ -22,7 +22,7 @@ import {
TORPEDO_ID,
ZIPCASTER_ID,
} from "~/modules/in-game-lists/weapon-ids";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { cutToNDecimalPlaces, roundToNDecimalPlaces } from "~/utils/number";
import { assertUnreachable } from "~/utils/types";
import {

View File

@@ -5,7 +5,7 @@ import type {
SpecialWeaponId,
} from "~/modules/in-game-lists/types";
import { weaponIdToBaseWeaponId } from "~/modules/in-game-lists/weapon-ids";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { Unpacked } from "~/utils/types";
import type {
AbilityPoints,

View File

@@ -7,7 +7,7 @@ import { Link } from "react-router";
import * as R from "remeda";
import { AbilitiesSelector } from "~/components/AbilitiesSelector";
import { Ability } from "~/components/Ability";
import Chart from "~/components/Chart";
import { Chart } from "~/components/Chart";
import { SendouSwitch } from "~/components/elements/Switch";
import {
SendouTab,
@@ -45,7 +45,7 @@ import {
TOXIC_MIST_ID,
} from "~/modules/in-game-lists/weapon-ids";
import { nullFilledArray } from "~/utils/arrays";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { logger } from "~/utils/logger";
import type { SendouRouteHandle } from "~/utils/remix.server";
import {

View File

@@ -1,6 +1,6 @@
import { abilities } from "~/modules/in-game-lists/abilities";
import type { Ability } from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { roundToNDecimalPlaces } from "~/utils/number";
import { MAX_AP } from "../build-analyzer/analyzer-constants";
import { isStackableAbility } from "../build-analyzer/core/ability-points";

View File

@@ -11,7 +11,7 @@ import type {
import { canonicalWeaponSplId } from "~/modules/in-game-lists/weapon-ids";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import { LimitReachedError } from "~/utils/errors";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { commonUserJsonObject, jsonArrayFrom } from "~/utils/kysely.server";
import { MAIN_SLOT_AP } from "../build-analyzer/analyzer-constants";
import {

View File

@@ -22,7 +22,7 @@ import {
databaseTimestampToJavascriptTimestamp,
dateToDatabaseTimestamp,
} from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
commonUserSelect,
concatUserSubmittedImagePrefix,

View File

@@ -5,7 +5,7 @@ import * as TournamentFactory from "~/db/seed/factories/TournamentFactory";
import * as TournamentOrganizationFactory from "~/db/seed/factories/TournamentOrganizationFactory";
import * as UserFactory from "~/db/seed/factories/UserFactory";
import * as CalendarRepository from "~/features/calendar/CalendarRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { wrappedAction } from "~/utils/Test";
import type { calendarNewSchemaServer } from "../calendar-new-schemas.server";
import { defaultBracketsFormValues } from "../calendar-progression-form";

View File

@@ -5,7 +5,7 @@ import * as ChatRoomFactory from "~/db/seed/factories/ChatRoomFactory";
import * as SQGroupFactory from "~/db/seed/factories/SQGroupFactory";
import * as UserFactory from "~/db/seed/factories/UserFactory";
import { db } from "~/db/sql";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import * as ChatRepository from "./ChatRepository.server";
const users = UserFactory.pool();

View File

@@ -12,7 +12,7 @@ import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server"
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";
import { hasPermission } from "~/modules/permissions/utils";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import * as ChatRepository from "./ChatRepository.server";
import * as ChatRoomResolver from "./ChatRoomResolver.server";
import { setupSqMatch } from "./tests/fixtures";

View File

@@ -2,7 +2,7 @@ import * as R from "remeda";
import { actorIdOrNullSafe } from "~/features/auth/core/user.server";
import * as EventBus from "~/features/events/core/EventBus.server";
import { chatRoomChannel, userChannel } from "~/features/events/events-types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { logger } from "~/utils/logger";
import * as ChatRepository from "./ChatRepository.server";
import * as ChatRoomResolver from "./ChatRoomResolver.server";

View File

@@ -3,7 +3,7 @@ import { requireUser } from "~/features/auth/core/user.server";
import * as EventBus from "~/features/events/core/EventBus.server";
import { chatRoomChannel, userChannel } from "~/features/events/events-types";
import { parseFormData } from "~/form/parse.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { badRequestIfFalsy, parseParams } from "~/utils/remix.server";
import { idObject } from "~/utils/schema";
import * as ChatRepository from "../ChatRepository.server";

View File

@@ -1,7 +1,7 @@
import type { ActionFunctionArgs } from "react-router";
import * as v from "valibot";
import { requireUser } from "~/features/auth/core/user.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { parseRequestPayload } from "~/utils/remix.server";
import * as SseConnections from "../core/SseConnections.server";
import * as TopicAccess from "../core/TopicAccess.server";

View File

@@ -1,4 +1,4 @@
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
export type ImageExtension = "webp" | "png" | "jpeg";

View File

@@ -4,7 +4,7 @@ import type { AuthenticatedUser } from "~/features/auth/core/user.server";
import type { ImageFieldValue } from "~/form/image-field";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import { shortNanoid } from "~/utils/id";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { errorToastIfFalsy } from "~/utils/remix.server";
import * as ImageRepository from "./ImageRepository.server";
import { dataUrlToImageBuffer } from "./image-bytes.server";

View File

@@ -2,7 +2,7 @@ import clsx from "clsx";
import { Flag } from "~/components/Flag";
import { Image } from "~/components/Image";
import { Placement } from "~/components/Placement";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { winnersImageUrl } from "~/utils/urls";
import playerData from "../top-ten.json";
import styles from "./TopTenPlayer.module.css";

View File

@@ -5,7 +5,7 @@ import type {
ModeWithStage,
StageId,
} from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { err, ok, unwrapOr } from "~/utils/result";
import type { MapPool } from "./map-pool";
import type { ReadonlyMapPoolObject } from "./map-pool-serializer/types";

View File

@@ -1,4 +1,4 @@
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { modesShort } from "../../../../modules/in-game-lists/modes";
import { stageIds } from "../../../../modules/in-game-lists/stage-ids";
import type { StageId } from "../../../../modules/in-game-lists/types";

View File

@@ -12,7 +12,7 @@ import { useCopyToClipboard } from "~/hooks/useCopyToClipboard";
import { stageIds } from "~/modules/in-game-lists/stage-ids";
import type { ModeWithStage } from "~/modules/in-game-lists/types";
import { useSearchParamsTyped } from "~/modules/search-params/hooks";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { metaTags, ogPageImage } from "~/utils/remix";
import type { SendouRouteHandle } from "~/utils/remix.server";
import { ipLabsMaps, MAPS_URL, navIconUrl } from "~/utils/urls";

View File

@@ -91,7 +91,7 @@ const TLDRAW_OPTIONS: Partial<TldrawOptions> = {
const MAIN_WEAPON_URL_PATTERN = /main-weapons-outlined\/(\d+)/;
const SPECIAL_WEAPON_URL_PATTERN = /special-weapons\/(\d+)/;
export default function Planner() {
export function Planner() {
const { t, i18n } = useTranslation(["common"]);
const { htmlThemeClass } = useTheme();

View File

@@ -28,7 +28,11 @@ export const handle: SendouRouteHandle = {
}),
};
const Planner = lazy(() => import("~/features/map-planner/components/Planner"));
const Planner = lazy(() =>
import("~/features/map-planner/components/Planner").then((module) => ({
default: module.Planner,
})),
);
export default function MapPlannerPage() {
const isHydrated = useHydrated();

View File

@@ -1,6 +1,6 @@
import { rating } from "openskill";
import type { Tables } from "~/db/tables";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { identifierToUserIds, type SkillTeamIdentifier } from "./mmr-utils";
import * as SkillRepository from "./SkillRepository.server";

View File

@@ -5,7 +5,7 @@ import {
rating,
type Team,
} from "openskill";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { TierName } from "./mmr-constants";
import { SP_BASE, SP_PER_ORDINAL, TIERS } from "./mmr-constants";

View File

@@ -22,7 +22,7 @@ vi.mock("./webPush.server", () => ({
get webPushEnabled() {
return mockWebPushEnabled.value;
},
default: {
webPush: {
sendNotification: mockSendNotification,
},
}));

View File

@@ -10,7 +10,7 @@ import { logger } from "../../../utils/logger";
import * as NotificationRepository from "../NotificationRepository.server";
import type { Notification } from "../notifications-types";
import { notificationLink, notificationMeta } from "../notifications-utils";
import webPush, { webPushEnabled } from "./webPush.server";
import { webPush, webPushEnabled } from "./webPush.server";
const NOTIFICATION_URGENCY: Record<Notification["type"], Urgency> = {
SQ_ADDED_TO_GROUP: "high",

View File

@@ -20,4 +20,4 @@ if (
logger.info("VAPID env vars not set, push notifications will not work");
}
export default webPush;
export { webPush };

View File

@@ -12,7 +12,7 @@ import type {
SubWeaponId,
} from "~/modules/in-game-lists/types";
import { weaponIdToBaseWeaponId } from "~/modules/in-game-lists/weapon-ids";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { roundToNDecimalPlaces } from "~/utils/number";
import {
DAMAGE_RECEIVERS,

View File

@@ -18,7 +18,7 @@ import {
CRAB_TANK_ID,
SPLASH_WALL_ID,
} from "~/modules/in-game-lists/weapon-ids";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { HitPoints } from "../calculator-types";
const WAVE_BREAKER_HP = 480;

View File

@@ -9,7 +9,7 @@ import {
} from "~/features/plus-voting/core";
import { parseFormData } from "~/form/parse.server";
import { requirePermission } from "~/modules/permissions/guards.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { badRequestIfFalsy } from "~/utils/remix.server";
import { assertUnreachable } from "~/utils/types";
import { suggestionActionSchema } from "../plus-suggestions-schemas";

View File

@@ -8,7 +8,7 @@ import {
nextNonCompletedVoting,
rangeToMonthYear,
} from "~/features/plus-voting/core";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { commonUserSelect } from "~/utils/kysely.server";
import type { Unwrapped } from "~/utils/types";
import * as PlusVoting from "./core/PlusVoting";

View File

@@ -9,7 +9,7 @@ import {
import { isVotingOpen } from "~/features/plus-voting/core/voting-time";
import * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { badRequestIfFalsy, parseRequestPayload } from "~/utils/remix.server";
import { PLUS_UPVOTE } from "../plus-voting-constants";
import { votingActionSchema } from "../plus-voting-schemas";

View File

@@ -2,7 +2,7 @@ import * as React from "react";
import type { Tables } from "~/db/tables";
import type * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server";
import { useHydrated } from "~/hooks/useHydrated";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { logger } from "~/utils/logger";
import { PLUS_DOWNVOTE, PLUS_UPVOTE } from "../plus-voting-constants";
import type { PlusVoteFromFE } from "./types";

View File

@@ -2,7 +2,7 @@ import { getUser } from "~/features/auth/core/user.server";
import { lastCompletedVoting } from "~/features/plus-voting/core";
import * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server";
import { isSupporter } from "~/modules/permissions/utils";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { UserWithPlusTier } from "~/utils/kysely.server";
import { roundToNDecimalPlaces } from "~/utils/number";

View File

@@ -26,7 +26,7 @@ import type {
StageId,
} from "~/modules/in-game-lists/types";
import { databaseTimestampToJavascriptTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { wrappedAction, wrappedLoader } from "~/utils/Test";
import { action } from "../actions/scanner-ingest.server";
import type {

View File

@@ -20,7 +20,7 @@ import {
} from "../core/detectors/death/index";
import { SCOREBOARD_EVENT_TYPE } from "../core/detectors/scoreboard/index";
import type { DetectedEvent } from "../core/detectors/types";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
const GRID_A: AbilityWithUnknown[][] = [
["ISM", "ISM", "ISM", "ISM"],

View File

@@ -5,7 +5,7 @@ import {
type BannerScoreRead,
resolveMatchScores,
} from "../core/detectors/scoreboard/banner";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
function read(value: number | null, confidence = 0.9): BannerScoreRead {
return {

View File

@@ -13,7 +13,7 @@ import type {
} from "../../core/detectors/minimap/index";
import { SPECTATOR_SLOTS } from "../../core/detectors/minimap/rois";
import type { DetectedEvent } from "../../core/detectors/types";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
const ALPHA: MainWeaponId[] = [40, 1001, 2010, 3030];
const BRAVO: MainWeaponId[] = [50, 210, 4010, 8000];

View File

@@ -6,7 +6,7 @@
import assert from "node:assert/strict";
import { frameEvictionIndex } from "../../worker/frame-queue";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
test("evicts the oldest of a backlog too short to thin", () => {
assert.equal(frameEvictionIndex([]), 0);

View File

@@ -25,7 +25,7 @@ import {
invalidObjectiveEvents,
} from "../../core/match-builder";
import type { ScannerLobby } from "../../scanner-types";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
const NAMES = ["w1", "w2", "w3", "w4", "l1", "l2", "l3", "l4"];
const ALPHA: MainWeaponId[] = [40, 1001, 2010, 3030];

View File

@@ -4,7 +4,7 @@ import type {
ScannerMatch,
ScannerMatchPlayer,
} from "../../core/scanner-match";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
const TEAM_A = ["Sendou", "Kiver", "Brian", "Zed"];
const TEAM_B = ["Gos", "Noah", "Alice", "Bob"];

View File

@@ -8,7 +8,7 @@ import {
DetectorScheduler,
type SchedulingInfo,
} from "../../core/detectors/scheduler";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
const OPTS = {
refineIntervalS: 0.1,

View File

@@ -19,7 +19,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -23,7 +23,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -17,7 +17,7 @@ export interface CompatTestContext {
): Promise<void>;
}
export default function test(
export function test(
name: string,
fn: (t: CompatTestContext) => void | Promise<void>,
): void {

View File

@@ -25,7 +25,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -1,6 +1,6 @@
import assert from "node:assert/strict";
import { loadOpenCV, minMaxLoc } from "../core/cv";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
test("opencv.js loads in Node and matchTemplate works", async () => {
const cv = await loadOpenCV();

View File

@@ -27,7 +27,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -1,6 +1,6 @@
import assert from "node:assert/strict";
import { parseReplayTimestamp } from "../core/replay-time";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
/** Expected epoch for a local wall time — timezone-independent comparison. */
function local(

View File

@@ -21,7 +21,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const detector = createScoreboardBattleLogDetector(

View File

@@ -21,7 +21,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -18,7 +18,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const detector = createScoreboardDetector(await loadScoreboardResources());

View File

@@ -5,7 +5,7 @@ import { sendouUpload } from "../components/sendou-upload";
import type { MinimapData } from "../core/detectors/minimap/index";
import type { ScoreboardData } from "../core/detectors/scoreboard/index";
import type { DetectedEvent } from "../core/detectors/types";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
const ALPHA: MainWeaponId[] = [40, 1001, 2010, 3030];
const BRAVO: MainWeaponId[] = [50, 210, 4010, 8000];

View File

@@ -24,7 +24,7 @@ import {
runDetectorOnFixture,
} from "../node/fixtures";
import { loadScoreboardResources } from "../node/resources";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
await loadOpenCV();
const resources = await loadScoreboardResources();

View File

@@ -21,7 +21,7 @@ import {
runDetectorOnFixture,
} from "../../node/fixtures";
import { loadScoreboardResources } from "../../node/resources";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
export async function runDeathSuite(
shard: number,

View File

@@ -21,7 +21,7 @@ import {
runDetectorOnFixture,
} from "../../node/fixtures";
import { loadScoreboardResources } from "../../node/resources";
import test from "../node-test-compat";
import { test } from "../node-test-compat";
export async function runScoreboardBattleLogReplaySuite(
shard: number,

View File

@@ -2,7 +2,7 @@ import assert from "node:assert/strict";
import type { ScoreboardData } from "../core/detectors/scoreboard/index";
import type { DetectedEvent } from "../core/detectors/types";
import { TimelineBuilder } from "../core/timeline/index";
import test from "./node-test-compat";
import { test } from "./node-test-compat";
function event(
t: number,

View File

@@ -21,7 +21,7 @@ import {
tournamentLogoWithDefault,
} from "~/utils/kysely.server";
import { db } from "../../db/sql";
import invariant from "../../utils/invariant";
import { invariant } from "../../utils/invariant";
import type { Unwrapped } from "../../utils/types";
import type { AssociationVisibility } from "../associations/associations-types";
import * as Scrim from "./core/Scrim";

View File

@@ -6,7 +6,7 @@ import { userIsBanned } from "~/features/ban/core/banned.server";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import { parseFormData } from "~/form/parse.server";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { errorToast, errorToastIfFalsy } from "~/utils/remix.server";
import { toDBBoolean } from "~/utils/sql";
import { scrimsPage } from "~/utils/urls";

View File

@@ -22,7 +22,7 @@ import { FormWithConfirm } from "~/components/FormWithConfirm";
import { ModeImage } from "~/components/Image";
import { LocaleTime } from "~/components/LocaleTime";
import { NoteAvatar } from "~/components/NoteAvatar";
import TimePopover from "~/components/TimePopover";
import { TimePopover } from "~/components/TimePopover";
import { useUser } from "~/features/auth/core/user";
import {
UserCard,

View File

@@ -15,7 +15,7 @@ import {
import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server";
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";
import type { TournamentSummary } from "~/features/tournament-bracket/core/summarizer.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { withUserId } from "~/utils/Test";
import * as SQMatchRepository from "./SQMatchRepository.server";

View File

@@ -27,7 +27,7 @@ import {
databaseTimestampToDate,
dateToDatabaseTimestamp,
} from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
commonUserSelect,
concatUserSubmittedImagePrefix,

View File

@@ -19,7 +19,7 @@ import { useUser } from "~/features/auth/core/user";
import { SENDOUQ_BEST_OF } from "~/features/sendouq/q-constants";
import { useAutoRerender } from "~/hooks/useAutoRerender";
import { databaseTimestampToDate } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { resolveGroupNames } from "../core/match-timeline";
import * as SendouQMatch from "../core/SendouQMatch";
import type { SendouQMatchLoaderData } from "../loaders/q.match.$id.server";

View File

@@ -5,7 +5,7 @@ import {
userPageLink,
type WebhookUser,
} from "~/modules/discord-webhook.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { SENDOU_INK_BASE_URL, sendouQMatchPage } from "~/utils/urls";
type MatchMember = WebhookUser & { id: number };

View File

@@ -10,7 +10,7 @@ import * as TeamFactory from "~/db/seed/factories/TeamFactory";
import * as UserFactory from "~/db/seed/factories/UserFactory";
import { db } from "~/db/sql";
import * as GroupMatchContinueVoteRepository from "~/features/sendouq-match/GroupMatchContinueVoteRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { FULL_GROUP_SIZE } from "./q-constants";
import * as SQGroupRepository from "./SQGroupRepository.server";

View File

@@ -14,7 +14,7 @@ import {
} from "~/features/mmr/tiered.server";
import * as SQMatchRepository from "~/features/sendouq-match/SQMatchRepository.server";
import type { ModeShort, StageId } from "~/modules/in-game-lists/types";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import * as SQGroupRepository from "../SQGroupRepository.server";
import { refreshSendouQInstance, SendouQ } from "./SendouQ.server";

View File

@@ -1,6 +1,6 @@
import { TIERS } from "~/features/mmr/mmr-constants";
import type { TieredSkill } from "~/features/mmr/tiered.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import type { TierDifference } from "../q-types";
const allTiersOrdered = TIERS.flatMap((tier) => [

View File

@@ -12,7 +12,7 @@ import * as UserFactory from "~/db/seed/factories/UserFactory";
import { db } from "~/db/sql";
import * as ChatSystemMessage from "~/features/chat/ChatSystemMessage.server";
import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
FULL_GROUP_SIZE,
SENDOUQ,

View File

@@ -13,7 +13,7 @@ import * as Seasons from "~/features/mmr/core/Seasons";
import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server";
import { stageIds } from "~/modules/in-game-lists/stage-ids";
import { dateToDatabaseTimestamp } from "~/utils/dates";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { wrappedAction } from "~/utils/Test";
import * as ReadyCheck from "../core/ready-check.server";
import { refreshSendouQInstance } from "../core/SendouQ.server";

View File

@@ -11,7 +11,7 @@ import * as SQGroupFactory from "~/db/seed/factories/SQGroupFactory";
import * as UserFactory from "~/db/seed/factories/UserFactory";
import * as Seasons from "~/features/mmr/core/Seasons";
import * as SQGroupRepository from "~/features/sendouq/SQGroupRepository.server";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import { wrappedAction, wrappedLoader } from "~/utils/Test";
import { SENDOUQ_LOOKING_PAGE } from "~/utils/urls";
import * as ReadyCheck from "../core/ready-check.server";

View File

@@ -1,6 +1,6 @@
import { afterAll, beforeAll, vi } from "vitest";
import * as Seasons from "~/features/mmr/core/Seasons";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
const startedSeasons = Seasons.list.filter(
(season) => season.starts.getTime() <= Date.now(),

View File

@@ -9,7 +9,7 @@ import { NON_PLAYER_TEAM_ROLES } from "~/features/team/team-constants";
import { subsOfResult } from "~/features/team/team-utils";
import { databaseTimestampNow } from "~/utils/dates";
import { shortNanoid } from "~/utils/id";
import invariant from "~/utils/invariant";
import { invariant } from "~/utils/invariant";
import {
commonUserSelect,
concatUserSubmittedImagePrefix,

Some files were not shown because too many files have changed in this diff Show More