diff --git a/app/components/AbilitiesSelector.tsx b/app/components/AbilitiesSelector.tsx index 0247c419f..cd8c85188 100644 --- a/app/components/AbilitiesSelector.tsx +++ b/app/components/AbilitiesSelector.tsx @@ -1,6 +1,6 @@ import clsx from "clsx"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { abilities } from "~/modules/in-game-lists"; import type { BuildAbilitiesTupleWithUnknown } from "~/modules/in-game-lists/types"; import { abilityImageUrl } from "~/utils/urls"; diff --git a/app/components/Dialog.tsx b/app/components/Dialog.tsx index 31fc0984e..7ee777310 100644 --- a/app/components/Dialog.tsx +++ b/app/components/Dialog.tsx @@ -1,5 +1,5 @@ import React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; export function Dialog({ children, diff --git a/app/components/FormWithConfirm.tsx b/app/components/FormWithConfirm.tsx index 2b2c124c6..c9274acf2 100644 --- a/app/components/FormWithConfirm.tsx +++ b/app/components/FormWithConfirm.tsx @@ -1,6 +1,6 @@ import { type FetcherWithComponents, useFetcher } from "@remix-run/react"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { useTranslation } from "react-i18next"; import { Button, type ButtonProps } from "./Button"; import { Dialog } from "./Dialog"; diff --git a/app/db/seed/index.ts b/app/db/seed/index.ts index f1302e36f..31d2028bd 100644 --- a/app/db/seed/index.ts +++ b/app/db/seed/index.ts @@ -2,7 +2,7 @@ import { faker } from "@faker-js/faker"; import capitalize from "just-capitalize"; import shuffle from "just-shuffle"; import { nanoid } from "nanoid"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { ADMIN_DISCORD_ID, ADMIN_ID, INVITE_CODE_LENGTH } from "~/constants"; import { db, sql } from "~/db/sql"; import { MapPool } from "~/features/map-list-generator/core/map-pool"; diff --git a/app/db/sql.ts b/app/db/sql.ts index 4a3a25232..442f46af3 100644 --- a/app/db/sql.ts +++ b/app/db/sql.ts @@ -1,5 +1,5 @@ import Database from "better-sqlite3"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Kysely, ParseJSONResultsPlugin, SqliteDialect } from "kysely"; import type { DB } from "./tables"; diff --git a/app/features/admin/AdminRepository.server.ts b/app/features/admin/AdminRepository.server.ts index d2f15259d..505444cb0 100644 --- a/app/features/admin/AdminRepository.server.ts +++ b/app/features/admin/AdminRepository.server.ts @@ -1,7 +1,7 @@ import { db, sql } from "~/db/sql"; import type { Tables } from "~/db/tables"; import { dateToDatabaseTimestamp } from "~/utils/dates"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { syncXPBadges } from "../badges/queries/syncXPBadges.server"; const removeOldLikesStm = sql.prepare(/*sql*/ ` diff --git a/app/features/admin/core/plus-tier.server.ts b/app/features/admin/core/plus-tier.server.ts index febdcd476..af8166d9b 100644 --- a/app/features/admin/core/plus-tier.server.ts +++ b/app/features/admin/core/plus-tier.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { addPendingPlusTiers } from "~/features/leaderboards/core/leaderboards.server"; import { userSPLeaderboard } from "~/features/leaderboards/queries/userSPLeaderboard.server"; import { previousSeason } from "~/features/mmr/season"; diff --git a/app/features/art/queries/addNewArt.server.ts b/app/features/art/queries/addNewArt.server.ts index fdb9a9406..6cec02fdc 100644 --- a/app/features/art/queries/addNewArt.server.ts +++ b/app/features/art/queries/addNewArt.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { Art, ArtTag, UserSubmittedImage } from "~/db/types"; diff --git a/app/features/art/routes/art.new.tsx b/app/features/art/routes/art.new.tsx index abed84d24..579fa4312 100644 --- a/app/features/art/routes/art.new.tsx +++ b/app/features/art/routes/art.new.tsx @@ -11,7 +11,7 @@ import clone from "just-clone"; import { nanoid } from "nanoid"; import * as React from "react"; import { useFetcher } from "react-router-dom"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Button } from "~/components/Button"; import { Combobox } from "~/components/Combobox"; import { FormMessage } from "~/components/FormMessage"; diff --git a/app/features/articles/routes/a.$slug.tsx b/app/features/articles/routes/a.$slug.tsx index 0ca2a94ba..25104d525 100644 --- a/app/features/articles/routes/a.$slug.tsx +++ b/app/features/articles/routes/a.$slug.tsx @@ -9,7 +9,7 @@ import { import { useLoaderData } from "@remix-run/react"; import * as React from "react"; import { articleBySlug } from "../core/bySlug.server"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { makeTitle } from "~/utils/strings"; import { articlePage, diff --git a/app/features/auth/core/DiscordStrategy.server.ts b/app/features/auth/core/DiscordStrategy.server.ts index 4e4e232dd..99d38147b 100644 --- a/app/features/auth/core/DiscordStrategy.server.ts +++ b/app/features/auth/core/DiscordStrategy.server.ts @@ -2,7 +2,7 @@ import { DISCORD_AUTH_KEY } from "./authenticator.server"; import type { User } from "~/db/types"; import type { OAuth2Profile } from "remix-auth-oauth2"; import { OAuth2Strategy } from "remix-auth-oauth2"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { z } from "zod"; import * as UserRepository from "~/features/user-page/UserRepository.server"; import { logger } from "~/utils/logger"; diff --git a/app/features/auth/core/session.server.ts b/app/features/auth/core/session.server.ts index 363760ca1..35b4a3792 100644 --- a/app/features/auth/core/session.server.ts +++ b/app/features/auth/core/session.server.ts @@ -1,5 +1,5 @@ import { createCookieSessionStorage } from "@remix-run/node"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; const ONE_YEAR_IN_SECONDS = 31_536_000; diff --git a/app/features/auth/core/user.ts b/app/features/auth/core/user.ts index 458f5c841..0e1c653c4 100644 --- a/app/features/auth/core/user.ts +++ b/app/features/auth/core/user.ts @@ -1,5 +1,5 @@ import { useMatches } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { RootLoaderData } from "~/root"; export function useUser() { diff --git a/app/features/badges/queries/syncXPBadges.server.ts b/app/features/badges/queries/syncXPBadges.server.ts index 0fb265be2..ce7b5d3ef 100644 --- a/app/features/badges/queries/syncXPBadges.server.ts +++ b/app/features/badges/queries/syncXPBadges.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { SPLATOON_3_XP_BADGE_VALUES, findSplatoon3XpBadgeValue, diff --git a/app/features/build-analyzer/analyzer-hooks.ts b/app/features/build-analyzer/analyzer-hooks.ts index e067965dd..5edfe03fd 100644 --- a/app/features/build-analyzer/analyzer-hooks.ts +++ b/app/features/build-analyzer/analyzer-hooks.ts @@ -18,7 +18,7 @@ import { validatedBuildFromSearchParams, validatedWeaponIdFromSearchParams, } from "./core/utils"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; export function useAnalyzeBuild() { const [searchParams, setSearchParams] = useSearchParams(); diff --git a/app/features/build-analyzer/core/stats.ts b/app/features/build-analyzer/core/stats.ts index d6e269605..b0948c312 100644 --- a/app/features/build-analyzer/core/stats.ts +++ b/app/features/build-analyzer/core/stats.ts @@ -36,7 +36,7 @@ import { RAINMAKER_SPEED_PENALTY_MODIFIER, } from "../analyzer-constants"; import { INK_CONSUME_TYPES } from "../analyzer-types"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { abilityPointsToEffects, abilityValues, diff --git a/app/features/build-analyzer/core/utils.ts b/app/features/build-analyzer/core/utils.ts index 9257d200a..d569e810d 100644 --- a/app/features/build-analyzer/core/utils.ts +++ b/app/features/build-analyzer/core/utils.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { EMPTY_BUILD } from "~/constants"; import type { Ability, diff --git a/app/features/build-analyzer/routes/analyzer.tsx b/app/features/build-analyzer/routes/analyzer.tsx index 298594ab5..31ee59ee7 100644 --- a/app/features/build-analyzer/routes/analyzer.tsx +++ b/app/features/build-analyzer/routes/analyzer.tsx @@ -4,7 +4,7 @@ import { Link } from "@remix-run/react"; import clsx from "clsx"; import * as React from "react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { AbilitiesSelector } from "~/components/AbilitiesSelector"; import { Ability } from "~/components/Ability"; import Chart from "~/components/Chart"; diff --git a/app/features/build-stats/build-stats-utils.ts b/app/features/build-stats/build-stats-utils.ts index fc6e2e9f4..e3c1c22fa 100644 --- a/app/features/build-stats/build-stats-utils.ts +++ b/app/features/build-stats/build-stats-utils.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { MAX_AP } from "~/constants"; import { abilities, type Ability } from "~/modules/in-game-lists"; import { roundToNDecimalPlaces } from "~/utils/number"; diff --git a/app/features/builds/BuildRepository.server.ts b/app/features/builds/BuildRepository.server.ts index 09bbd9717..b3845b9df 100644 --- a/app/features/builds/BuildRepository.server.ts +++ b/app/features/builds/BuildRepository.server.ts @@ -1,6 +1,6 @@ import type { Transaction } from "kysely"; import { jsonArrayFrom } from "kysely/helpers/sqlite"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { db } from "~/db/sql"; import type { BuildWeapon, DB, Tables, TablesInsertable } from "~/db/tables"; import { diff --git a/app/features/builds/queries/buildsBy.server.ts b/app/features/builds/queries/buildsBy.server.ts index 95ad4ec05..ebf852101 100644 --- a/app/features/builds/queries/buildsBy.server.ts +++ b/app/features/builds/queries/buildsBy.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { Build, diff --git a/app/features/calendar/CalendarRepository.server.ts b/app/features/calendar/CalendarRepository.server.ts index 7d9ae9836..29c8d8efc 100644 --- a/app/features/calendar/CalendarRepository.server.ts +++ b/app/features/calendar/CalendarRepository.server.ts @@ -13,7 +13,7 @@ import { MapPool } from "~/features/map-list-generator/core/map-pool"; import { databaseTimestampNow, dateToDatabaseTimestamp } from "~/utils/dates"; import { sumArray } from "~/utils/number"; import type { Unwrapped } from "~/utils/types"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; // TODO: convert from raw to using the "exists" function const hasBadge = sql/* sql */ `exists ( diff --git a/app/features/calendar/actions/calendar.new.server.ts b/app/features/calendar/actions/calendar.new.server.ts index a91e59ef1..d904fed09 100644 --- a/app/features/calendar/actions/calendar.new.server.ts +++ b/app/features/calendar/actions/calendar.new.server.ts @@ -44,7 +44,7 @@ import { CALENDAR_EVENT, REG_CLOSES_AT_OPTIONS } from "../calendar-constants"; import { calendarEventMaxDate, calendarEventMinDate } from "../calendar-utils"; import { nanoid } from "nanoid"; import { s3UploadHandler } from "~/features/img-upload"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; export const action: ActionFunction = async ({ request }) => { const user = await requireUser(request); diff --git a/app/features/calendar/routes/calendar.new.tsx b/app/features/calendar/routes/calendar.new.tsx index b362f77a2..3fe3c1d8f 100644 --- a/app/features/calendar/routes/calendar.new.tsx +++ b/app/features/calendar/routes/calendar.new.tsx @@ -52,7 +52,7 @@ import { validateFollowUpBrackets, } from "../calendar-utils"; import { Tags } from "../components/Tags"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import Compressor from "compressorjs"; import { userSubmittedImage } from "~/utils/urls"; diff --git a/app/features/chat/NotificationService.server.ts b/app/features/chat/NotificationService.server.ts index 8eaa1db19..9fa2fe381 100644 --- a/app/features/chat/NotificationService.server.ts +++ b/app/features/chat/NotificationService.server.ts @@ -1,5 +1,5 @@ import { nanoid } from "nanoid"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { SKALOP_TOKEN_HEADER_NAME } from "~/constants"; import type { ChatMessage } from "./chat-types"; diff --git a/app/features/chat/components/Chat.tsx b/app/features/chat/components/Chat.tsx index 6acec9b1a..90ea24c88 100644 --- a/app/features/chat/components/Chat.tsx +++ b/app/features/chat/components/Chat.tsx @@ -7,7 +7,7 @@ import { nanoid } from "nanoid"; import clsx from "clsx"; import { Button } from "../../../components/Button"; import ReconnectingWebSocket from "reconnecting-websocket"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { useRootLoaderData } from "~/hooks/useRootLoaderData"; import { useRevalidator } from "@remix-run/react"; import type { ChatMessage } from "../chat-types"; diff --git a/app/features/img-upload/routes/upload.tsx b/app/features/img-upload/routes/upload.tsx index 91ccfa69e..851262f6d 100644 --- a/app/features/img-upload/routes/upload.tsx +++ b/app/features/img-upload/routes/upload.tsx @@ -14,7 +14,7 @@ import * as React from "react"; import { Main } from "~/components/Main"; import Compressor from "compressorjs"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Button } from "~/components/Button"; import { useTranslation } from "react-i18next"; import { requireUser } from "~/features/auth/core/user.server"; diff --git a/app/features/img-upload/s3.server.ts b/app/features/img-upload/s3.server.ts index 163421a19..32c894fa4 100644 --- a/app/features/img-upload/s3.server.ts +++ b/app/features/img-upload/s3.server.ts @@ -8,7 +8,7 @@ import { S3 } from "@aws-sdk/client-s3"; import type { UploadHandler } from "@remix-run/node"; import { writeAsyncIterableToWritable } from "@remix-run/node"; import { nanoid } from "nanoid"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; const envVars = () => { const { diff --git a/app/features/leaderboards/components/TopTenPlayer.tsx b/app/features/leaderboards/components/TopTenPlayer.tsx index 6f1dc756a..37d1bbbf3 100644 --- a/app/features/leaderboards/components/TopTenPlayer.tsx +++ b/app/features/leaderboards/components/TopTenPlayer.tsx @@ -3,7 +3,7 @@ import { Image } from "~/components/Image"; import { Placement } from "~/components/Placement"; import { winnersImageUrl } from "~/utils/urls"; import playerData from "../top-ten.json"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import clsx from "clsx"; export function TopTenPlayer({ diff --git a/app/features/map-list-generator/core/map-list-generator/map-list.ts b/app/features/map-list-generator/core/map-list-generator/map-list.ts index eedc1bdf5..b9c3470c1 100644 --- a/app/features/map-list-generator/core/map-list-generator/map-list.ts +++ b/app/features/map-list-generator/core/map-list-generator/map-list.ts @@ -1,6 +1,6 @@ // Original version by Lean -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { ModeShort, ModeWithStage, diff --git a/app/features/map-list-generator/core/map-pool-serializer/serializer.ts b/app/features/map-list-generator/core/map-pool-serializer/serializer.ts index f7c926156..4a4037a9c 100644 --- a/app/features/map-list-generator/core/map-pool-serializer/serializer.ts +++ b/app/features/map-list-generator/core/map-pool-serializer/serializer.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { modesShort, type StageId, diff --git a/app/features/map-list-generator/routes/maps.tsx b/app/features/map-list-generator/routes/maps.tsx index 0ca4b0ee5..4eca98357 100644 --- a/app/features/map-list-generator/routes/maps.tsx +++ b/app/features/map-list-generator/routes/maps.tsx @@ -8,7 +8,7 @@ import { Link, useLoaderData, useSearchParams } from "@remix-run/react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { useCopyToClipboard } from "react-use"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Button } from "~/components/Button"; import { Label } from "~/components/Label"; import { Main } from "~/components/Main"; diff --git a/app/features/mmr/mmr-utils.ts b/app/features/mmr/mmr-utils.ts index 9becd9dbe..a9732ecda 100644 --- a/app/features/mmr/mmr-utils.ts +++ b/app/features/mmr/mmr-utils.ts @@ -1,6 +1,6 @@ import { rate as openskillRate, ordinal, rating } from "openskill"; import type { Rating, Team } from "openskill/dist/types"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { TierName } from "./mmr-constants"; import { TIERS } from "./mmr-constants"; diff --git a/app/features/object-damage-calculator/calculator-constants.ts b/app/features/object-damage-calculator/calculator-constants.ts index 4fc04fdb9..693620d6c 100644 --- a/app/features/object-damage-calculator/calculator-constants.ts +++ b/app/features/object-damage-calculator/calculator-constants.ts @@ -1,5 +1,5 @@ import { type MainWeaponId, mainWeaponIds } from "~/modules/in-game-lists"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { CombineWith } from "./calculator-types"; import type { AnyWeapon, DamageType } from "../build-analyzer"; import type objectDamages from "./core/object-dmg.json"; diff --git a/app/features/object-damage-calculator/core/objectDamage.ts b/app/features/object-damage-calculator/core/objectDamage.ts index 825c93153..57539ab5e 100644 --- a/app/features/object-damage-calculator/core/objectDamage.ts +++ b/app/features/object-damage-calculator/core/objectDamage.ts @@ -11,7 +11,7 @@ import type { SubWeaponId, } from "~/modules/in-game-lists"; import { roundToNDecimalPlaces } from "~/utils/number"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { objectHitPoints } from "./objectHitPoints"; import { damageTypesToCombine, diff --git a/app/features/object-damage-calculator/core/objectHitPoints.ts b/app/features/object-damage-calculator/core/objectHitPoints.ts index 099647de7..a38ff91ea 100644 --- a/app/features/object-damage-calculator/core/objectHitPoints.ts +++ b/app/features/object-damage-calculator/core/objectHitPoints.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { BIG_BUBBLER_ID, CRAB_TANK_ID, diff --git a/app/features/plus-suggestions/routes/plus.suggestions.tsx b/app/features/plus-suggestions/routes/plus.suggestions.tsx index b8e3f6cae..b5c9de700 100644 --- a/app/features/plus-suggestions/routes/plus.suggestions.tsx +++ b/app/features/plus-suggestions/routes/plus.suggestions.tsx @@ -6,7 +6,7 @@ import type { import type { ShouldRevalidateFunction } from "@remix-run/react"; import { Link, Outlet, useLoaderData, useSearchParams } from "@remix-run/react"; import clsx from "clsx"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { z } from "zod"; import { Avatar } from "~/components/Avatar"; import { Button, LinkButton } from "~/components/Button"; diff --git a/app/features/plus-voting/core/usePlusVoting.ts b/app/features/plus-voting/core/usePlusVoting.ts index f2cc75b61..431b3f0d8 100644 --- a/app/features/plus-voting/core/usePlusVoting.ts +++ b/app/features/plus-voting/core/usePlusVoting.ts @@ -1,5 +1,5 @@ import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { PLUS_DOWNVOTE, PLUS_UPVOTE } from "~/constants"; import type { User } from "~/db/types"; import type { PlusVoteFromFE } from "./types"; diff --git a/app/features/plus-voting/routes/plus.voting.results.tsx b/app/features/plus-voting/routes/plus.voting.results.tsx index 94eee22f1..e89a8080e 100644 --- a/app/features/plus-voting/routes/plus.voting.results.tsx +++ b/app/features/plus-voting/routes/plus.voting.results.tsx @@ -5,7 +5,7 @@ import type { } from "@remix-run/node"; import { Link, useLoaderData } from "@remix-run/react"; import clsx from "clsx"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { UserWithPlusTier } from "~/db/types"; import * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server"; import { getUser } from "~/features/auth/core/user.server"; diff --git a/app/features/plus-voting/routes/plus.voting.tsx b/app/features/plus-voting/routes/plus.voting.tsx index 029ad946f..f8fac70a6 100644 --- a/app/features/plus-voting/routes/plus.voting.tsx +++ b/app/features/plus-voting/routes/plus.voting.tsx @@ -27,7 +27,7 @@ import { safeJSONParse } from "~/utils/zod"; import { PlusSuggestionComments } from "../../plus-suggestions/routes/plus.suggestions"; import * as PlusVotingRepository from "~/features/plus-voting/PlusVotingRepository.server"; import { dateToDatabaseTimestamp } from "~/utils/dates"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { isVotingActive } from "~/features/plus-voting/core/voting-time"; export const meta: MetaFunction = () => { diff --git a/app/features/sendouq/core/groups.server.ts b/app/features/sendouq/core/groups.server.ts index 7532ef902..9716ec8fa 100644 --- a/app/features/sendouq/core/groups.server.ts +++ b/app/features/sendouq/core/groups.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Tables } from "~/db/tables"; import type { Group } from "~/db/types"; import { TIERS } from "~/features/mmr/mmr-constants"; diff --git a/app/features/sendouq/core/match.server.ts b/app/features/sendouq/core/match.server.ts index 944645d15..2251395de 100644 --- a/app/features/sendouq/core/match.server.ts +++ b/app/features/sendouq/core/match.server.ts @@ -1,5 +1,5 @@ import shuffle from "just-shuffle"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { ParsedMemento, UserMapModePreferences } from "~/db/tables"; import { type DbMapPoolList, diff --git a/app/features/sendouq/core/skills.server.ts b/app/features/sendouq/core/skills.server.ts index 7b651a604..63d91c16f 100644 --- a/app/features/sendouq/core/skills.server.ts +++ b/app/features/sendouq/core/skills.server.ts @@ -1,6 +1,6 @@ import { ordinal } from "openskill"; import type { Rating } from "openskill/dist/types"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Group, GroupMatch, diff --git a/app/features/sendouq/core/summarizer.server.ts b/app/features/sendouq/core/summarizer.server.ts index b133056db..05d22c364 100644 --- a/app/features/sendouq/core/summarizer.server.ts +++ b/app/features/sendouq/core/summarizer.server.ts @@ -1,7 +1,7 @@ import type { MapResult, PlayerResult } from "~/db/types"; import type { MatchById } from "../queries/findMatchById.server"; import { currentOrPreviousSeason } from "~/features/mmr/season"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { winnersArrayToWinner } from "../q-utils"; export function summarizeMaps({ diff --git a/app/features/sendouq/q-utils.ts b/app/features/sendouq/q-utils.ts index 63fc2bc20..9ab18c244 100644 --- a/app/features/sendouq/q-utils.ts +++ b/app/features/sendouq/q-utils.ts @@ -9,7 +9,7 @@ import { import { SENDOUQ } from "./q-constants"; import { stageIds } from "~/modules/in-game-lists"; import type { Params } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { MapPool } from "../map-list-generator/core/map-pool"; import { accountCreatedInTheLastSixMonths } from "~/utils/users"; import { databaseTimestampToDate } from "~/utils/dates"; diff --git a/app/features/sendouq/queries/findCurrentGroupByUserId.server.ts b/app/features/sendouq/queries/findCurrentGroupByUserId.server.ts index 603f725ad..99de5d0ff 100644 --- a/app/features/sendouq/queries/findCurrentGroupByUserId.server.ts +++ b/app/features/sendouq/queries/findCurrentGroupByUserId.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { Group, GroupMember } from "~/db/types"; diff --git a/app/features/sendouq/queries/syncGroupTeamId.server.ts b/app/features/sendouq/queries/syncGroupTeamId.server.ts index 99003ba4e..ab567e9f5 100644 --- a/app/features/sendouq/queries/syncGroupTeamId.server.ts +++ b/app/features/sendouq/queries/syncGroupTeamId.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import { FULL_GROUP_SIZE } from "../q-constants"; diff --git a/app/features/sendouq/routes/q.looking.test.ts b/app/features/sendouq/routes/q.looking.test.ts index 193624c8f..64328856c 100644 --- a/app/features/sendouq/routes/q.looking.test.ts +++ b/app/features/sendouq/routes/q.looking.test.ts @@ -1,5 +1,5 @@ import type { SerializeFrom } from "@remix-run/server-runtime"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { suite } from "uvu"; import * as assert from "uvu/assert"; import { db } from "~/db/sql"; diff --git a/app/features/sendouq/routes/q.looking.tsx b/app/features/sendouq/routes/q.looking.tsx index 9a4ac969e..bc15e103d 100644 --- a/app/features/sendouq/routes/q.looking.tsx +++ b/app/features/sendouq/routes/q.looking.tsx @@ -9,7 +9,7 @@ import clsx from "clsx"; import * as React from "react"; import { Flipper } from "react-flip-toolkit"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Alert } from "~/components/Alert"; import { LinkButton } from "~/components/Button"; import { Image } from "~/components/Image"; diff --git a/app/features/sendouq/routes/q.match.$id.tsx b/app/features/sendouq/routes/q.match.$id.tsx index dd7b7e946..419335d4d 100644 --- a/app/features/sendouq/routes/q.match.$id.tsx +++ b/app/features/sendouq/routes/q.match.$id.tsx @@ -16,7 +16,7 @@ import { import clsx from "clsx"; import * as React from "react"; import { Flipped, Flipper } from "react-flip-toolkit"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Avatar } from "~/components/Avatar"; import { Button, LinkButton } from "~/components/Button"; import { WeaponCombobox } from "~/components/Combobox"; diff --git a/app/features/sendouq/routes/q.preparing.tsx b/app/features/sendouq/routes/q.preparing.tsx index cfcb84f41..10fcc02e0 100644 --- a/app/features/sendouq/routes/q.preparing.tsx +++ b/app/features/sendouq/routes/q.preparing.tsx @@ -6,7 +6,7 @@ import type { import { redirect } from "@remix-run/node"; import { useFetcher, useLoaderData } from "@remix-run/react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Main } from "~/components/Main"; import { SubmitButton } from "~/components/SubmitButton"; import { getUser, requireUser } from "~/features/auth/core/user.server"; diff --git a/app/features/sendouq/routes/q.tsx b/app/features/sendouq/routes/q.tsx index ff65baf09..44fcaaa80 100644 --- a/app/features/sendouq/routes/q.tsx +++ b/app/features/sendouq/routes/q.tsx @@ -9,7 +9,7 @@ import { Link, useFetcher, useLoaderData } from "@remix-run/react"; import clsx from "clsx"; import * as React from "react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Alert } from "~/components/Alert"; import { Button, LinkButton } from "~/components/Button"; import { Dialog } from "~/components/Dialog"; diff --git a/app/features/theme/core/session.server.ts b/app/features/theme/core/session.server.ts index 67204ed0d..1e1073ef8 100644 --- a/app/features/theme/core/session.server.ts +++ b/app/features/theme/core/session.server.ts @@ -2,7 +2,7 @@ import { createCookieSessionStorage } from "@remix-run/node"; import { isTheme } from "./provider"; import type { Theme } from "./provider"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; const TEN_YEARS_IN_SECONDS = 315_360_000; diff --git a/app/features/top-search/routes/xsearch.tsx b/app/features/top-search/routes/xsearch.tsx index d24df0c07..f5a84f0de 100644 --- a/app/features/top-search/routes/xsearch.tsx +++ b/app/features/top-search/routes/xsearch.tsx @@ -12,7 +12,7 @@ import type { XRankPlacement } from "~/db/types"; import type { RankedModeShort } from "~/modules/in-game-lists"; import { nanoid } from "nanoid"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { MonthYear } from "../top-search-utils"; import { i18next } from "~/modules/i18n/i18next.server"; import { makeTitle } from "~/utils/strings"; diff --git a/app/features/tournament-bracket/components/BracketMapListDialog.tsx b/app/features/tournament-bracket/components/BracketMapListDialog.tsx index 5be07102a..a66bad8a8 100644 --- a/app/features/tournament-bracket/components/BracketMapListDialog.tsx +++ b/app/features/tournament-bracket/components/BracketMapListDialog.tsx @@ -7,7 +7,7 @@ import { useTournament, useTournamentToSetMapPool, } from "~/features/tournament/routes/to.$id"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { type TournamentRoundMaps } from "~/db/tables"; import { useTranslation } from "react-i18next"; import { ModeImage, StageImage } from "~/components/Image"; diff --git a/app/features/tournament-bracket/components/MatchActions.tsx b/app/features/tournament-bracket/components/MatchActions.tsx index 9cd705d6c..6d39feba2 100644 --- a/app/features/tournament-bracket/components/MatchActions.tsx +++ b/app/features/tournament-bracket/components/MatchActions.tsx @@ -15,7 +15,7 @@ import type { Result } from "./StartedMatch"; import { TeamRosterInputs } from "./TeamRosterInputs"; import * as PickBan from "../core/PickBan"; import { MatchActionsBanPicker } from "./MatchActionsBanPicker"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Button } from "~/components/Button"; import { EditIcon } from "~/components/icons/Edit"; import { TOURNAMENT } from "~/features/tournament/tournament-constants"; diff --git a/app/features/tournament-bracket/components/MatchActionsBanPicker.tsx b/app/features/tournament-bracket/components/MatchActionsBanPicker.tsx index 9c87a55bb..3e079a86a 100644 --- a/app/features/tournament-bracket/components/MatchActionsBanPicker.tsx +++ b/app/features/tournament-bracket/components/MatchActionsBanPicker.tsx @@ -2,7 +2,7 @@ import { useFetcher, useLoaderData } from "@remix-run/react"; import clsx from "clsx"; import * as React from "react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Divider } from "~/components/Divider"; import { ModeImage, StageImage } from "~/components/Image"; import { SubmitButton } from "~/components/SubmitButton"; diff --git a/app/features/tournament-bracket/core/Bracket.ts b/app/features/tournament-bracket/core/Bracket.ts index 2922fca7d..2b85c5b2b 100644 --- a/app/features/tournament-bracket/core/Bracket.ts +++ b/app/features/tournament-bracket/core/Bracket.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Tables, TournamentBracketProgression } from "~/db/tables"; import { TOURNAMENT } from "~/features/tournament"; import type { DataTypes, ValueToArray } from "~/modules/brackets-manager/types"; diff --git a/app/features/tournament-bracket/core/PickBan.ts b/app/features/tournament-bracket/core/PickBan.ts index 0e6431758..2f52299d6 100644 --- a/app/features/tournament-bracket/core/PickBan.ts +++ b/app/features/tournament-bracket/core/PickBan.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { TournamentRoundMaps } from "~/db/tables"; import type { ModeShort, diff --git a/app/features/tournament-bracket/core/Swiss.ts b/app/features/tournament-bracket/core/Swiss.ts index c8aea74c9..e665ec3c2 100644 --- a/app/features/tournament-bracket/core/Swiss.ts +++ b/app/features/tournament-bracket/core/Swiss.ts @@ -1,6 +1,6 @@ // separate from brackets-manager as this wasn't part of the original brackets-manager library -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { DataTypes, ValueToArray } from "~/modules/brackets-manager/types"; import type { InputStage, Match } from "~/modules/brackets-model"; import { nullFilledArray } from "~/utils/arrays"; diff --git a/app/features/tournament-bracket/core/Tournament.ts b/app/features/tournament-bracket/core/Tournament.ts index 647c3c396..0e6cce2e7 100644 --- a/app/features/tournament-bracket/core/Tournament.ts +++ b/app/features/tournament-bracket/core/Tournament.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { TournamentBracketProgression, TournamentStage, diff --git a/app/features/tournament-bracket/core/mapList.server.ts b/app/features/tournament-bracket/core/mapList.server.ts index 0706d0b54..b19237805 100644 --- a/app/features/tournament-bracket/core/mapList.server.ts +++ b/app/features/tournament-bracket/core/mapList.server.ts @@ -9,7 +9,7 @@ import { findTieBreakerMapPoolByTournamentId } from "../queries/findTieBreakerMa import { findMapPoolByTeamId } from "../queries/findMapPoolByTeamId.server"; import { syncCached } from "~/utils/cache.server"; import type { Tables, TournamentRoundMaps } from "~/db/tables"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Bracket } from "./Bracket"; import type { Round } from "~/modules/brackets-model"; import type { ModeShort, StageId } from "~/modules/in-game-lists"; diff --git a/app/features/tournament-bracket/core/summarizer.server.ts b/app/features/tournament-bracket/core/summarizer.server.ts index b927f3934..3a3f0bfa2 100644 --- a/app/features/tournament-bracket/core/summarizer.server.ts +++ b/app/features/tournament-bracket/core/summarizer.server.ts @@ -5,7 +5,7 @@ import type { TournamentResult, } from "~/db/types"; import type { AllMatchResult } from "../queries/allMatchResultsByTournamentId.server"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { removeDuplicates } from "~/utils/arrays"; import type { Rating } from "openskill/dist/types"; import { diff --git a/app/features/tournament-bracket/routes/to.$id.brackets.tsx b/app/features/tournament-bracket/routes/to.$id.brackets.tsx index 1863560bd..37baf8098 100644 --- a/app/features/tournament-bracket/routes/to.$id.brackets.tsx +++ b/app/features/tournament-bracket/routes/to.$id.brackets.tsx @@ -5,7 +5,7 @@ import * as React from "react"; import { useTranslation } from "react-i18next"; import { useCopyToClipboard } from "react-use"; import { useEventSource } from "remix-utils/sse/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Alert } from "~/components/Alert"; import { Avatar } from "~/components/Avatar"; import { Button } from "~/components/Button"; diff --git a/app/features/tournament-bracket/routes/to.$id.matches.$mid.tsx b/app/features/tournament-bracket/routes/to.$id.matches.$mid.tsx index f916bdf31..0e0bfd9fc 100644 --- a/app/features/tournament-bracket/routes/to.$id.matches.$mid.tsx +++ b/app/features/tournament-bracket/routes/to.$id.matches.$mid.tsx @@ -3,7 +3,7 @@ import { useLoaderData, useRevalidator } from "@remix-run/react"; import { nanoid } from "nanoid"; import * as React from "react"; import { useEventSource } from "remix-utils/sse/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { LinkButton } from "~/components/Button"; import { ArrowLongLeftIcon } from "~/components/icons/ArrowLongLeft"; import { sql } from "~/db/sql"; diff --git a/app/features/tournament-bracket/tournament-bracket-utils.ts b/app/features/tournament-bracket/tournament-bracket-utils.ts index c631f6474..a3c51d456 100644 --- a/app/features/tournament-bracket/tournament-bracket-utils.ts +++ b/app/features/tournament-bracket/tournament-bracket-utils.ts @@ -1,5 +1,5 @@ import type { Params } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { TournamentMatch } from "~/db/types"; import type { DataTypes, ValueToArray } from "~/modules/brackets-manager/types"; import type { TournamentMaplistSource } from "~/modules/tournament-map-list-generator"; diff --git a/app/features/tournament/core/sets.server.ts b/app/features/tournament/core/sets.server.ts index bb0908135..575cb1084 100644 --- a/app/features/tournament/core/sets.server.ts +++ b/app/features/tournament/core/sets.server.ts @@ -7,7 +7,7 @@ import { import { findRoundsByTournamentId } from "../queries/findRoundsByTournamentId.server"; import type { TournamentMaplistSource } from "~/modules/tournament-map-list-generator"; import { sourceTypes } from "~/modules/tournament-map-list-generator"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Tables } from "~/db/tables"; import { logger } from "~/utils/logger"; diff --git a/app/features/tournament/queries/createSwissBracketInTransaction.server.ts b/app/features/tournament/queries/createSwissBracketInTransaction.server.ts index 0ebb71607..538b1b68a 100644 --- a/app/features/tournament/queries/createSwissBracketInTransaction.server.ts +++ b/app/features/tournament/queries/createSwissBracketInTransaction.server.ts @@ -1,5 +1,5 @@ import { nanoid } from "nanoid"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { Tables } from "~/db/tables"; import type { DataTypes, ValueToArray } from "~/modules/brackets-manager/types"; diff --git a/app/features/tournament/queries/joinLeaveTeam.server.ts b/app/features/tournament/queries/joinLeaveTeam.server.ts index fa86079a4..9e04ac976 100644 --- a/app/features/tournament/queries/joinLeaveTeam.server.ts +++ b/app/features/tournament/queries/joinLeaveTeam.server.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import { checkOut } from "./checkOut.server"; import { deleteSub } from "~/features/tournament-subs"; diff --git a/app/features/tournament/routes/to.$id.admin.tsx b/app/features/tournament/routes/to.$id.admin.tsx index fb3205775..de03302fd 100644 --- a/app/features/tournament/routes/to.$id.admin.tsx +++ b/app/features/tournament/routes/to.$id.admin.tsx @@ -2,7 +2,7 @@ import type { ActionFunction } from "@remix-run/node"; import { useFetcher, useSubmit } from "@remix-run/react"; import * as React from "react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Avatar } from "~/components/Avatar"; import { Button, LinkButton } from "~/components/Button"; import { Divider } from "~/components/Divider"; diff --git a/app/features/tournament/routes/to.$id.join.tsx b/app/features/tournament/routes/to.$id.join.tsx index 9503f3270..6eb302c4c 100644 --- a/app/features/tournament/routes/to.$id.join.tsx +++ b/app/features/tournament/routes/to.$id.join.tsx @@ -3,7 +3,7 @@ import { redirect } from "@remix-run/node"; import { Form, useLoaderData } from "@remix-run/react"; import React from "react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { SubmitButton } from "~/components/SubmitButton"; import { INVITE_CODE_LENGTH } from "~/constants"; import { useUser } from "~/features/auth/core/user"; diff --git a/app/features/tournament/routes/to.$id.register.tsx b/app/features/tournament/routes/to.$id.register.tsx index a12fd7faf..4cc499830 100644 --- a/app/features/tournament/routes/to.$id.register.tsx +++ b/app/features/tournament/routes/to.$id.register.tsx @@ -4,7 +4,7 @@ import clsx from "clsx"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { useCopyToClipboard } from "react-use"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Alert } from "~/components/Alert"; import { Avatar } from "~/components/Avatar"; import { Button, LinkButton } from "~/components/Button"; diff --git a/app/features/tournament/routes/to.$id.seeds.tsx b/app/features/tournament/routes/to.$id.seeds.tsx index 76904e101..bb69c95fb 100644 --- a/app/features/tournament/routes/to.$id.seeds.tsx +++ b/app/features/tournament/routes/to.$id.seeds.tsx @@ -28,7 +28,7 @@ import { import clsx from "clsx"; import clone from "just-clone"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Alert } from "~/components/Alert"; import { Button } from "~/components/Button"; import { Catcher } from "~/components/Catcher"; diff --git a/app/features/tournament/tournament-utils.ts b/app/features/tournament/tournament-utils.ts index 3bb70059e..2ac9ae620 100644 --- a/app/features/tournament/tournament-utils.ts +++ b/app/features/tournament/tournament-utils.ts @@ -1,5 +1,5 @@ import type { Params } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { Tournament } from "~/db/types"; import type { ModeShort } from "~/modules/in-game-lists"; import { rankedModesShort } from "~/modules/in-game-lists/modes"; diff --git a/app/features/user-page/routes/u.$identifier.art.tsx b/app/features/user-page/routes/u.$identifier.art.tsx index e4d171b44..968a6f544 100644 --- a/app/features/user-page/routes/u.$identifier.art.tsx +++ b/app/features/user-page/routes/u.$identifier.art.tsx @@ -9,7 +9,7 @@ import { import { useLoaderData, useMatches } from "@remix-run/react"; import { useSearchParamState } from "~/hooks/useSearchParamState"; import { useUser } from "~/features/auth/core/user"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { LinkButton } from "~/components/Button"; import { Popover } from "~/components/Popover"; import { countUnvalidatedArt } from "~/features/img-upload"; diff --git a/app/features/user-page/routes/u.$identifier.edit.tsx b/app/features/user-page/routes/u.$identifier.edit.tsx index ab18c872b..b6054b9f0 100644 --- a/app/features/user-page/routes/u.$identifier.edit.tsx +++ b/app/features/user-page/routes/u.$identifier.edit.tsx @@ -8,7 +8,7 @@ import type { TCountryCode } from "countries-list"; import { countries, getEmojiFlag } from "countries-list"; import * as React from "react"; import { Trans, useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { z } from "zod"; import { Button } from "~/components/Button"; import { WeaponCombobox } from "~/components/Combobox"; diff --git a/app/features/user-page/routes/u.$identifier.index.tsx b/app/features/user-page/routes/u.$identifier.index.tsx index 57d7c0a47..3c571bec1 100644 --- a/app/features/user-page/routes/u.$identifier.index.tsx +++ b/app/features/user-page/routes/u.$identifier.index.tsx @@ -1,7 +1,7 @@ import { Link, useMatches } from "@remix-run/react"; import clsx from "clsx"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Avatar } from "~/components/Avatar"; import { Badge } from "~/components/Badge"; import { Flag } from "~/components/Flag"; diff --git a/app/features/user-page/routes/u.$identifier.results.highlights.tsx b/app/features/user-page/routes/u.$identifier.results.highlights.tsx index 5ab1b7a46..de978e0e7 100644 --- a/app/features/user-page/routes/u.$identifier.results.highlights.tsx +++ b/app/features/user-page/routes/u.$identifier.results.highlights.tsx @@ -1,7 +1,7 @@ import { type ActionFunction, redirect } from "@remix-run/node"; import { Form, useMatches } from "@remix-run/react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { z } from "zod"; import { FormErrors } from "~/components/FormErrors"; import { requireUser } from "~/features/auth/core/user.server"; diff --git a/app/features/user-page/routes/u.$identifier.results.tsx b/app/features/user-page/routes/u.$identifier.results.tsx index 8fa909b19..30f7ef84a 100644 --- a/app/features/user-page/routes/u.$identifier.results.tsx +++ b/app/features/user-page/routes/u.$identifier.results.tsx @@ -1,5 +1,5 @@ import { useMatches } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { LinkButton } from "~/components/Button"; import { Section } from "~/components/Section"; import { useTranslation } from "react-i18next"; diff --git a/app/features/user-page/routes/u.$identifier.seasons.tsx b/app/features/user-page/routes/u.$identifier.seasons.tsx index d82b14c1f..8b1622b34 100644 --- a/app/features/user-page/routes/u.$identifier.seasons.tsx +++ b/app/features/user-page/routes/u.$identifier.seasons.tsx @@ -7,7 +7,7 @@ import { } from "@remix-run/react"; import clsx from "clsx"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Avatar } from "~/components/Avatar"; import Chart from "~/components/Chart"; import { diff --git a/app/features/user-page/routes/u.$identifier.tsx b/app/features/user-page/routes/u.$identifier.tsx index a43fc0c36..d23f761e8 100644 --- a/app/features/user-page/routes/u.$identifier.tsx +++ b/app/features/user-page/routes/u.$identifier.tsx @@ -5,7 +5,7 @@ import type { } from "@remix-run/node"; import { Outlet, useLoaderData, useLocation } from "@remix-run/react"; import * as React from "react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { Main } from "~/components/Main"; import { SubNav, SubNavLink } from "~/components/SubNav"; import { userTopPlacements } from "~/features/top-search"; diff --git a/app/features/user-page/routes/u.$identifier.vods.tsx b/app/features/user-page/routes/u.$identifier.vods.tsx index 341a7d199..d5407683c 100644 --- a/app/features/user-page/routes/u.$identifier.vods.tsx +++ b/app/features/user-page/routes/u.$identifier.vods.tsx @@ -1,6 +1,6 @@ import { useMatches } from "@remix-run/react"; import { useTranslation } from "react-i18next"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { LinkButton } from "~/components/Button"; import { Popover } from "~/components/Popover"; import { useUser } from "~/features/auth/core/user"; diff --git a/app/hooks/useRootLoaderData.ts b/app/hooks/useRootLoaderData.ts index 09eb5d0c7..6bc968184 100644 --- a/app/hooks/useRootLoaderData.ts +++ b/app/hooks/useRootLoaderData.ts @@ -1,5 +1,5 @@ import { useMatches } from "@remix-run/react"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { RootLoaderData } from "~/root"; export function useRootLoaderData() { diff --git a/app/modules/brackets-manager/ordering.ts b/app/modules/brackets-manager/ordering.ts index 2f61b904f..479854a0f 100644 --- a/app/modules/brackets-manager/ordering.ts +++ b/app/modules/brackets-manager/ordering.ts @@ -2,7 +2,7 @@ import type { SeedOrdering } from "~/modules/brackets-model"; import type { OrderingMap } from "./types"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; export const ordering: OrderingMap = { natural: (array: T[]) => [...array], diff --git a/app/modules/tournament-map-list-generator/constants.ts b/app/modules/tournament-map-list-generator/constants.ts index 8b9d2b113..44bf1a1d7 100644 --- a/app/modules/tournament-map-list-generator/constants.ts +++ b/app/modules/tournament-map-list-generator/constants.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { MapPool } from "~/features/map-list-generator/core/map-pool"; import { BANNED_MAPS } from "~/features/sendouq-settings/banned-maps"; import type { ModeShort, StageId } from "../in-game-lists"; diff --git a/app/modules/tournament-map-list-generator/tournament-map-list.ts b/app/modules/tournament-map-list-generator/tournament-map-list.ts index 8e1e2be4d..d6e645aa3 100644 --- a/app/modules/tournament-map-list-generator/tournament-map-list.ts +++ b/app/modules/tournament-map-list-generator/tournament-map-list.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { type ModeShort, type StageId, stageIds } from "../in-game-lists"; import { DEFAULT_MAP_POOL } from "./constants"; import type { diff --git a/app/modules/twitch/utils.ts b/app/modules/twitch/utils.ts index 0bec1ffa9..26cc16479 100644 --- a/app/modules/twitch/utils.ts +++ b/app/modules/twitch/utils.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; export const getTwitchEnvVars = () => { const { TWITCH_CLIENT_ID, TWITCH_CLIENT_SECRET } = process.env; diff --git a/app/permissions.ts b/app/permissions.ts index de34799a9..0d1f863d6 100644 --- a/app/permissions.ts +++ b/app/permissions.ts @@ -1,4 +1,4 @@ -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type * as PlusSuggestionRepository from "~/features/plus-suggestions/PlusSuggestionRepository.server"; import { ADMIN_ID, LOHI_TOKEN_HEADER_NAME, MOD_IDS } from "./constants"; import type { diff --git a/app/utils/arrays.ts b/app/utils/arrays.ts index 71c6134a3..3e2077771 100644 --- a/app/utils/arrays.ts +++ b/app/utils/arrays.ts @@ -3,7 +3,7 @@ import clone from "just-clone"; import shuffle from "just-shuffle"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; // (not all arrays need to necessarily run but they need to be defined) export function allTruthy(arr: unknown[]) { diff --git a/app/utils/invariant.ts b/app/utils/invariant.ts new file mode 100644 index 000000000..5567cad35 --- /dev/null +++ b/app/utils/invariant.ts @@ -0,0 +1,12 @@ +// adapted from https://github.com/alexreardon/tiny-invariant, changed to show errors in production as well + +export default function invariant( + condition: any, + message?: string, +): asserts condition { + if (condition) return; + + const addition = message ? `: ${message}` : ""; + + throw new Error(`Invariant failed${addition}`); +} diff --git a/e2e/tournament.spec.ts b/e2e/tournament.spec.ts index 92b9e9cdc..eba59e2be 100644 --- a/e2e/tournament.spec.ts +++ b/e2e/tournament.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from "@playwright/test"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { ADMIN_ID } from "~/constants"; import { NZAP_TEST_ID } from "~/db/seed/constants"; import { BANNED_MAPS } from "~/features/sendouq-settings/banned-maps"; diff --git a/package-lock.json b/package-lock.json index 929f23956..0773879b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,7 +62,6 @@ "remix-utils": "^7.6.0", "slugify": "^1.6.6", "swr": "^2.2.5", - "tiny-invariant": "^1.3.3", "zod": "^3.23.8" }, "devDependencies": { @@ -16066,11 +16065,6 @@ "xtend": "~4.0.1" } }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, "node_modules/to-fast-properties": { "version": "2.0.0", "dev": true, @@ -29366,11 +29360,6 @@ "xtend": "~4.0.1" } }, - "tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, "to-fast-properties": { "version": "2.0.0", "dev": true diff --git a/package.json b/package.json index 74e77f992..2c76daab9 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,6 @@ "remix-utils": "^7.6.0", "slugify": "^1.6.6", "swr": "^2.2.5", - "tiny-invariant": "^1.3.3", "zod": "^3.23.8" }, "devDependencies": { diff --git a/scripts/add-badge-winners.ts b/scripts/add-badge-winners.ts index 9c30db4af..4c9ef1729 100644 --- a/scripts/add-badge-winners.ts +++ b/scripts/add-badge-winners.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const badgeId = process.argv[2]?.trim(); diff --git a/scripts/add-badge.ts b/scripts/add-badge.ts index 8b153a2b6..846aa837d 100644 --- a/scripts/add-badge.ts +++ b/scripts/add-badge.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const code = process.argv[2]?.trim(); diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts index 82ff61b3b..d47244f93 100644 --- a/scripts/create-analyzer-json.ts +++ b/scripts/create-analyzer-json.ts @@ -15,7 +15,7 @@ import subWeapons from "./dicts/WeaponInfoSub.json"; import specialWeapons from "./dicts/WeaponInfoSpecial.json"; import playersParams from "./dicts/SplPlayer.game__GameParameterTable.json"; import fs from "node:fs"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import type { MainWeaponParams, SubWeaponParams } from "~/modules/analyzer"; import type { ParamsJson } from "~/modules/analyzer/types"; import { z } from "zod"; diff --git a/scripts/create-gear-json.ts b/scripts/create-gear-json.ts index c68738cb4..bb23fcf8b 100644 --- a/scripts/create-gear-json.ts +++ b/scripts/create-gear-json.ts @@ -6,7 +6,7 @@ import clothes from "./dicts/GearInfoClothes.json"; import shoes from "./dicts/GearInfoShoes.json"; import fs from "node:fs"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { LANG_JSONS_TO_CREATE, loadLangDicts, diff --git a/scripts/create-misc-json.ts b/scripts/create-misc-json.ts index 4d9821d37..850a32495 100644 --- a/scripts/create-misc-json.ts +++ b/scripts/create-misc-json.ts @@ -7,7 +7,7 @@ import { translationJsonFolderName, } from "./utils"; import fs from "fs"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { abilitiesShort } from "~/modules/in-game-lists"; import path from "path"; diff --git a/scripts/delete-badge.ts b/scripts/delete-badge.ts index 3d6623a6b..8d46b2582 100644 --- a/scripts/delete-badge.ts +++ b/scripts/delete-badge.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { db } from "~/db/sql"; const rawId = process.argv[2]?.trim(); diff --git a/scripts/delete-skill.ts b/scripts/delete-skill.ts index 60be076b6..f244330d4 100644 --- a/scripts/delete-skill.ts +++ b/scripts/delete-skill.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const discordId = process.argv[2]?.trim(); diff --git a/scripts/delete-user.ts b/scripts/delete-user.ts index 0f1bb183e..ba585e410 100644 --- a/scripts/delete-user.ts +++ b/scripts/delete-user.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const discordId = process.argv[2]?.trim(); diff --git a/scripts/disband-team.ts b/scripts/disband-team.ts index 842ea2d01..7e5b474c5 100644 --- a/scripts/disband-team.ts +++ b/scripts/disband-team.ts @@ -1,5 +1,5 @@ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { db } from "~/db/sql"; import { dateToDatabaseTimestamp } from "~/utils/dates"; import { logger } from "~/utils/logger"; diff --git a/scripts/fc-lookup.ts b/scripts/fc-lookup.ts index 801663246..a615becb3 100644 --- a/scripts/fc-lookup.ts +++ b/scripts/fc-lookup.ts @@ -1,5 +1,5 @@ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { db } from "~/db/sql"; import { logger } from "~/utils/logger"; diff --git a/scripts/nuke-reported-weapons.ts b/scripts/nuke-reported-weapons.ts index 6c214f958..79f4d5ef6 100644 --- a/scripts/nuke-reported-weapons.ts +++ b/scripts/nuke-reported-weapons.ts @@ -1,5 +1,5 @@ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { db } from "~/db/sql"; import { currentSeason as _currentSeason } from "~/features/mmr/season"; import { dateToDatabaseTimestamp } from "~/utils/dates"; diff --git a/scripts/placements/index.ts b/scripts/placements/index.ts index fdac57f49..0942ab3f1 100644 --- a/scripts/placements/index.ts +++ b/scripts/placements/index.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { XRankPlacement } from "~/db/types"; import { type MainWeaponId, mainWeaponIds } from "~/modules/in-game-lists"; diff --git a/scripts/remove-vodder.ts b/scripts/remove-vodder.ts index 6e6100e3a..2c5d9a8e9 100644 --- a/scripts/remove-vodder.ts +++ b/scripts/remove-vodder.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const discordId = process.argv[2]?.trim(); diff --git a/scripts/rename-badge.ts b/scripts/rename-badge.ts index 7fb7ae833..ac70bd48a 100644 --- a/scripts/rename-badge.ts +++ b/scripts/rename-badge.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const id = process.argv[2]?.trim(); diff --git a/scripts/reopen-tournament.ts b/scripts/reopen-tournament.ts index 587a8144a..959ed2cfe 100644 --- a/scripts/reopen-tournament.ts +++ b/scripts/reopen-tournament.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; // only to be used if tournament didn't have skills etc. calculated diff --git a/scripts/replace-img-names.ts b/scripts/replace-img-names.ts index a2ce64bbf..b69c0c0b7 100644 --- a/scripts/replace-img-names.ts +++ b/scripts/replace-img-names.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import fs from "node:fs"; import path from "node:path"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); diff --git a/scripts/replace-weapon-names.ts b/scripts/replace-weapon-names.ts index 0b9b54f60..da558c590 100644 --- a/scripts/replace-weapon-names.ts +++ b/scripts/replace-weapon-names.ts @@ -3,7 +3,7 @@ import fs from "node:fs"; import path from "node:path"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import weapons from "./dicts/WeaponInfoMain.json"; import { fileURLToPath } from "url"; diff --git a/scripts/season-initial-powers.ts b/scripts/season-initial-powers.ts index 7d18038e8..fdc1a9202 100644 --- a/scripts/season-initial-powers.ts +++ b/scripts/season-initial-powers.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import "dotenv/config"; import { ordinal } from "openskill"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import type { Skill } from "~/db/types"; import type { TierName } from "~/features/mmr/mmr-constants"; diff --git a/scripts/skip-plus.ts b/scripts/skip-plus.ts index ae3b9d9a2..3a2533cee 100644 --- a/scripts/skip-plus.ts +++ b/scripts/skip-plus.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import { currentOrPreviousSeason } from "~/features/mmr/season"; diff --git a/scripts/swap-users.ts b/scripts/swap-users.ts index 0c7d1cea8..fa1726118 100644 --- a/scripts/swap-users.ts +++ b/scripts/swap-users.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const discordId = process.argv[2]?.trim(); diff --git a/scripts/unlink-player.ts b/scripts/unlink-player.ts index ca0312d3f..3a07cc4c5 100644 --- a/scripts/unlink-player.ts +++ b/scripts/unlink-player.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; import { syncXPBadges } from "../app/features/badges/queries/syncXPBadges.server"; diff --git a/scripts/unskip-plus.ts b/scripts/unskip-plus.ts index 678eb5c36..76043ad0f 100644 --- a/scripts/unskip-plus.ts +++ b/scripts/unskip-plus.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { sql } from "~/db/sql"; const discordId = process.argv[2]?.trim(); diff --git a/scripts/update-fc.ts b/scripts/update-fc.ts index b89bc0e7b..ac2126ccb 100644 --- a/scripts/update-fc.ts +++ b/scripts/update-fc.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import "dotenv/config"; -import invariant from "tiny-invariant"; +import invariant from "~/utils/invariant"; import { ADMIN_ID } from "~/constants"; import { FRIEND_CODE_REGEXP } from "~/features/sendouq/q-constants"; import * as UserRepository from "~/features/user-page/UserRepository.server";