From 7c6f381bbe794bba709c9843cfcdebbf74c84c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 7 Sep 2024 23:00:56 -0500 Subject: [PATCH] fix: no cross-bot imports --- package.json | 3 +- packages/bot/package.json | 1 + packages/bot/src/commands/breakdown/index.tsx | 2 +- .../bot/src/commands/breakdown/render.tsx | 6 +- packages/bot/src/commands/evolution.tsx | 6 +- packages/bot/src/commands/fullStats.tsx | 4 +- .../bot/src/commands/ratingLeaderboard.tsx | 100 ++---------------- packages/bot/src/commands/replay.tsx | 4 +- packages/bot/src/commands/research.tsx | 2 +- packages/bot/src/commands/searchClans.ts | 2 +- packages/bot/src/commands/stats.tsx | 4 +- packages/bot/src/commands/today.ts | 2 +- .../components/Breakdown/components/Row.tsx | 6 +- .../Tanks/components/Item/constants.ts | 23 ---- .../Tanks/components/Item/index.tsx | 2 +- packages/bot/src/components/TierWeights.tsx | 4 +- .../src/core/blitz/resolveTankId.ts | 6 +- .../src/core/blitzkit/filtersToDescription.ts | 2 +- .../src/core/blitzkit/processes.ts | 2 +- .../blitzstars/getBlitzStarsLinkButton.ts | 4 +- .../src/core/blitzstars/getPlayerHistories.ts | 6 +- .../src/core/blitzstars/getPlayerStats.ts | 0 .../src/core/blitzstars/getStatsInPeriod.ts | 6 +- .../core/discord/autocompleteClan/index.ts | 2 +- .../src/core/discord/getFiltersFromCommand.ts | 2 +- .../core/discord/resolveClanFromCommand.ts | 2 +- .../bot/src/{types/ttf.d.ts => types.d.ts} | 0 packages/bot/src/workers/bot.ts | 2 +- packages/bot/tsconfig.json | 4 + .../clanList.ts => core/src/blitz/clans.ts} | 0 packages/core/src/blitz/index.ts | 3 +- packages/core/src/blitz/leagues.ts | 7 -- packages/core/src/blitz/rating.ts | 79 +++++++++++++- .../src}/blitz/searchClansAcrossRegions.ts | 4 +- .../src/blitzkit/tankDefinitions/constants.ts | 14 ++- packages/core/src/blitzstars/index.ts | 1 + .../src}/blitzstars/tankAverages.ts | 10 +- packages/core/src/index.ts | 1 + packages/core/src/radix/var.ts | 3 +- .../src/statistics/deltaBkrlBlitzStats.ts | 14 ++- packages/core/src/statistics/filterStats.ts | 11 +- .../core/src/statistics/getTierWeights.ts | 4 +- packages/core/src/types/proto.d.ts | 4 - .../scripts/src/buildRatingLeaderboard.ts | 7 +- .../src/app/api/tank-averages/route.ts | 4 +- .../tools/compare/components/CompareRow.tsx | 23 ++-- .../tools/compare/components/CompareTable.tsx | 25 ++--- .../components/IntersectionMarker/index.tsx | 4 +- .../website/src/app/tools/rating/page.tsx | 16 ++- .../website/src/app/tools/session/page.tsx | 4 +- .../tankopedia/[id]/components/Title.tsx | 4 +- .../website/src/core/blitz/getRatingInfo.ts | 3 +- .../website/src/core/blitz/getRatingLeague.ts | 6 +- .../src/core/blitz/getRatingNeighbors.ts | 3 +- .../core/blitzkit/getArchivedRatingInfo.ts | 2 +- packages/website/src/types/glsl.d.ts | 4 - tsconfig.json | 2 +- types.d.ts | 14 +++ 58 files changed, 233 insertions(+), 252 deletions(-) delete mode 100644 packages/bot/src/components/Tanks/components/Item/constants.ts rename packages/{website => bot}/src/core/blitz/resolveTankId.ts (83%) rename packages/{website => bot}/src/core/blitzkit/filtersToDescription.ts (92%) rename packages/{website => bot}/src/core/blitzkit/processes.ts (90%) rename packages/{website => bot}/src/core/blitzstars/getBlitzStarsLinkButton.ts (73%) rename packages/{website => bot}/src/core/blitzstars/getPlayerHistories.ts (92%) rename packages/{website => bot}/src/core/blitzstars/getPlayerStats.ts (100%) rename packages/bot/src/{types/ttf.d.ts => types.d.ts} (100%) rename packages/{bot/src/types/clanList.ts => core/src/blitz/clans.ts} (100%) delete mode 100644 packages/core/src/blitz/leagues.ts rename packages/{website/src/core => core/src}/blitz/searchClansAcrossRegions.ts (92%) create mode 100644 packages/core/src/blitzstars/index.ts rename packages/{website/src/core => core/src}/blitzstars/tankAverages.ts (87%) delete mode 100644 packages/core/src/types/proto.d.ts delete mode 100644 packages/website/src/types/glsl.d.ts create mode 100644 types.d.ts diff --git a/package.json b/package.json index ca9008dd1..dc2d92374 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "version": "1.22.6", "description": "🎉 Tools for everything World of Tanks Blitz", "type": "module", + "types": "./types.d.ts", "workspaces": [ "packages/*" ], @@ -11,7 +12,7 @@ "build:assets": "bun --filter=@blitzkit/scripts run build:assets", "build:averages": "bun --filter=@blitzkit/scripts run build:averages", "build:bot": "rm -rf dist/bot && mkdir -p dist/bot/prisma && bun build src/index.ts src/workers/bot.ts src/workers/render.ts --outdir dist/bot --target=bun --splitting --sourcemap=inline --external sharp && cp -R src/lang dist/bot/lang && prisma generate && cp prisma/schema.prisma dist/bot/prisma/schema.prisma && cp -R node_modules/prisma/*.node dist/bot/prisma && cd dist/bot && bun init -y && bun add sharp", - "build:website": "prisma generate & bun build:sitemap && next build", + "build:website": "prisma generate && bun --filter=@blitzkit/website run build", "build:sitemap": "bun scripts/sitemap.ts", "build:docs": "vitepress build docs", "build:ratingleaderboard": "bun --script scripts/buildRatingLeaderboard.ts", diff --git a/packages/bot/package.json b/packages/bot/package.json index 626d16645..3bc03a78a 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -2,6 +2,7 @@ "name": "@blitzkit/bot", "private": true, "type": "module", + "types": "src/types.d.ts", "dependencies": { "@blitzkit/core": "workspace:*", "satori": "^0.10.14", diff --git a/packages/bot/src/commands/breakdown/index.tsx b/packages/bot/src/commands/breakdown/index.tsx index 656563c9a..5acd2237a 100644 --- a/packages/bot/src/commands/breakdown/index.tsx +++ b/packages/bot/src/commands/breakdown/index.tsx @@ -1,4 +1,4 @@ -import { getBlitzStarsLinkButton } from '../../../../website/src/core/blitzstars/getBlitzStarsLinkButton'; +import { getBlitzStarsLinkButton } from '../../core/blitzstars/getBlitzStarsLinkButton'; import addPeriodicFilterOptions from '../../core/discord/addPeriodicFilterOptions'; import addUsernameChoices from '../../core/discord/addUsernameChoices'; import autocompleteTanks from '../../core/discord/autocompleteTanks'; diff --git a/packages/bot/src/commands/breakdown/render.tsx b/packages/bot/src/commands/breakdown/render.tsx index d4e3ea55a..79e128581 100644 --- a/packages/bot/src/commands/breakdown/render.tsx +++ b/packages/bot/src/commands/breakdown/render.tsx @@ -5,6 +5,7 @@ import { TankDefinition, tankDefinitions, } from '@blitzkit/core'; +import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages'; import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8'; import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile'; import { Locale } from 'discord.js'; @@ -12,13 +13,12 @@ import { chunk } from 'lodash'; import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../../../../website/src/core/blitz/getClanAccountInfo'; import getTankStats from '../../../../website/src/core/blitz/getTankStats'; -import { filtersToDescription } from '../../../../website/src/core/blitzkit/filtersToDescription'; -import { tankAverages } from '../../../../website/src/core/blitzstars/tankAverages'; import { UserError } from '../../../../website/src/hooks/userError'; import * as Breakdown from '../../components/Breakdown'; import CommandWrapper from '../../components/CommandWrapper'; import NoData from '../../components/NoData'; import TitleBar from '../../components/TitleBar'; +import { filtersToDescription } from '../../core/blitzkit/filtersToDescription'; import getStatsInPeriod from '../../core/blitzstars/getStatsInPeriod'; import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand'; import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand'; @@ -35,7 +35,7 @@ export async function renderBreakdown( ) { const { t, translate } = translator(locale); const awaitedTankDefinitions = await tankDefinitions; - const awaitedTankAverages = await tankAverages; + const awaitedTankAverages = await blitzStarsTankAverages; const statsInPeriod = await getStatsInPeriod(region, id, start, end, locale); const { filteredOrder } = await filterStats(statsInPeriod, filters); const accountInfo = await getAccountInfo(region, id); diff --git a/packages/bot/src/commands/evolution.tsx b/packages/bot/src/commands/evolution.tsx index 9dd5d0211..baf2b7231 100644 --- a/packages/bot/src/commands/evolution.tsx +++ b/packages/bot/src/commands/evolution.tsx @@ -1,15 +1,15 @@ import { Locale, SlashCommandSubcommandGroupBuilder } from 'discord.js'; import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo'; -import resolveTankId from '../../../website/src/core/blitz/resolveTankId'; import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL'; -import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton'; -import getPlayerHistories from '../../../website/src/core/blitzstars/getPlayerHistories'; import CommandWrapper from '../components/CommandWrapper'; import * as Graph from '../components/Graph'; import { LineColor } from '../components/Graph/components/Line/constants'; import NoData from '../components/NoData'; import TitleBar from '../components/TitleBar'; +import resolveTankId from '../core/blitz/resolveTankId'; +import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton'; +import getPlayerHistories from '../core/blitzstars/getPlayerHistories'; import getTankHistories from '../core/blitzstars/getTankHistories'; import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands'; import addTankChoices from '../core/discord/addTankChoices'; diff --git a/packages/bot/src/commands/fullStats.tsx b/packages/bot/src/commands/fullStats.tsx index 3fbebfb80..c4acac6ac 100644 --- a/packages/bot/src/commands/fullStats.tsx +++ b/packages/bot/src/commands/fullStats.tsx @@ -3,13 +3,13 @@ import { Locale } from 'discord.js'; import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo'; import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL'; -import { filtersToDescription } from '../../../website/src/core/blitzkit/filtersToDescription'; -import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton'; import CommandWrapper from '../components/CommandWrapper'; import GenericAllStats from '../components/GenericAllStats'; import NoData from '../components/NoData'; import TierWeights from '../components/TierWeights'; import TitleBar from '../components/TitleBar'; +import { filtersToDescription } from '../core/blitzkit/filtersToDescription'; +import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton'; import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod'; import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions'; import addUsernameChoices from '../core/discord/addUsernameChoices'; diff --git a/packages/bot/src/commands/ratingLeaderboard.tsx b/packages/bot/src/commands/ratingLeaderboard.tsx index c450d0241..b8a06a9c0 100644 --- a/packages/bot/src/commands/ratingLeaderboard.tsx +++ b/packages/bot/src/commands/ratingLeaderboard.tsx @@ -2,6 +2,7 @@ import { BkrlDiscriminatedEntries, FIRST_MINIMAL_ARCHIVED_RATING_SEASON, LEAGUES, + RatingInfo, Region, } from '@blitzkit/core'; import { @@ -34,93 +35,6 @@ import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand'; import { translator } from '../core/localization/translator'; import { CommandRegistry } from '../events/interactionCreate'; -export interface RatingPlayer { - spa_id: number; - mmr: number; - season_number: number; - calibrationBattlesLeft: number; - number: number; - percentile: number; - skip: boolean; - updated_at: string; - score: number; - nickname: string; - clan_tag: string; -} - -export interface LeagueTop { - result: RatingPlayer[]; -} - -export type RatingReward = { - from_position: number; - to_position: number; - count: number; -} & ( - | { - type: 'vehicle'; - - vehicle: { - id: number; - name: string; - nation: string; - subnation: string; - use_subnation_flag: boolean; - type_slug: string; - level: number; - roman_level: string; - user_string: string; - image_url: string; - preview_image_url: string; - is_premium: boolean; - is_collectible: boolean; - }; - } - | { - type: 'stuff'; - - stuff: { - name: string; - count: number; - title: string; - image_url: string; - type: string; - - sizes: {}; - }; - } -); - -export interface RatingLeague { - title: string; - small_icon: string; - big_icon: string; - background: string; - index: number; - percentile: number; -} - -export type RatingInfo = - | { - detail: undefined; - - title: string; - icon: string | null; - start_at: string; - finish_at: string; - current_season: number; - updated_at: string; - count: number; - - rewards: RatingReward[]; - leagues: RatingLeague[]; - } - | { detail: { error: string } }; - -export interface RatingNeighbors { - neighbors: RatingPlayer[]; -} - interface SimplifiedPlayer { id: number; score: number; @@ -256,7 +170,7 @@ export const ratingLeaderboardCommand = new Promise( name_localizations: localizationObject( `common.leagues.${name}`, ), - } satisfies APIApplicationCommandOptionChoice), + }) satisfies APIApplicationCommandOptionChoice, ), ) .setRequired(true); @@ -279,8 +193,8 @@ export const ratingLeaderboardCommand = new Promise( const season = seasonOption ? parseInt(seasonOption) : onGoingSeason - ? latestArchivedSeasonNumber + 1 - : latestArchivedSeasonNumber; + ? latestArchivedSeasonNumber + 1 + : latestArchivedSeasonNumber; const isCurrentSeason = season === latestArchivedSeasonNumber + 1; let titleName: string; let titleImage: string | undefined; @@ -313,7 +227,7 @@ export const ratingLeaderboardCommand = new Promise( position: player.number, clan: player.clan_tag, nickname: player.nickname, - } satisfies SimplifiedPlayer), + }) satisfies SimplifiedPlayer, ), ) : await getArchivedRatingLeaderboard(region, season!).then( @@ -349,7 +263,7 @@ export const ratingLeaderboardCommand = new Promise( 'bot.commands.rating_leaderboard.body.deleted_player', [`${player.id}`], ), - } satisfies SimplifiedPlayer), + }) satisfies SimplifiedPlayer, ); }, ); @@ -398,7 +312,7 @@ export const ratingLeaderboardCommand = new Promise( score: player.score, clan: player.clan_tag, nickname: player.nickname, - } satisfies SimplifiedPlayer), + }) satisfies SimplifiedPlayer, ), ) : await getArchivedRatingLeaderboard(region, season!).then( diff --git a/packages/bot/src/commands/replay.tsx b/packages/bot/src/commands/replay.tsx index c13a61a21..1661a4129 100644 --- a/packages/bot/src/commands/replay.tsx +++ b/packages/bot/src/commands/replay.tsx @@ -4,6 +4,7 @@ import { TIER_ROMAN_NUMERALS, } from '@blitzkit/core'; import { tankIcon } from '@blitzkit/core/src/blitzkit/tankIcon'; +import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages'; import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8'; import { clamp } from 'lodash'; import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo'; @@ -11,7 +12,6 @@ import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL'; import { iconPng } from '../../../website/src/core/blitzkit/iconPng'; import { mapDefinitions } from '../../../website/src/core/blitzkit/mapDefinitions'; import { RenderConfiguration } from '../../../website/src/core/blitzkit/renderConfiguration'; -import { tankAverages } from '../../../website/src/core/blitzstars/tankAverages'; import CommandWrapper from '../components/CommandWrapper'; import TitleBar from '../components/TitleBar'; import buttonLink from '../core/discord/buttonLink'; @@ -221,7 +221,7 @@ async function playerListing( winningTeam: number, recordingPlayer = false, ) { - const awaitedTankAverages = await tankAverages; + const awaitedTankAverages = await blitzStarsTankAverages; const awaitedTankDefinitions = await tankDefinitions; const tank = awaitedTankDefinitions[player.vehicle_descr]; const blockAccent = recordingPlayer ? '_amber' : ''; diff --git a/packages/bot/src/commands/research.tsx b/packages/bot/src/commands/research.tsx index a29216fb2..d706f8322 100644 --- a/packages/bot/src/commands/research.tsx +++ b/packages/bot/src/commands/research.tsx @@ -9,7 +9,6 @@ import { escapeMarkdown, Locale } from 'discord.js'; import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo'; import getTankStats from '../../../website/src/core/blitz/getTankStats'; -import resolveTankId from '../../../website/src/core/blitz/resolveTankId'; import { buildTechTreeLine } from '../../../website/src/core/blitzkit/buildTechTreeLine'; import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL'; import { iconPng } from '../../../website/src/core/blitzkit/iconPng'; @@ -17,6 +16,7 @@ import { resolveAncestry } from '../../../website/src/core/blitzkit/resolveAnces import { tankIconPng } from '../../../website/src/core/blitzkit/tankIconPng'; import CommandWrapper from '../components/CommandWrapper'; import TitleBar from '../components/TitleBar'; +import resolveTankId from '../core/blitz/resolveTankId'; import addUsernameChoices from '../core/discord/addUsernameChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; diff --git a/packages/bot/src/commands/searchClans.ts b/packages/bot/src/commands/searchClans.ts index 2a6c99210..133f3973d 100644 --- a/packages/bot/src/commands/searchClans.ts +++ b/packages/bot/src/commands/searchClans.ts @@ -1,4 +1,5 @@ import { Region } from '@blitzkit/core'; +import { ClanList } from '@blitzkit/core/src/blitz/clanList'; import { Locale } from 'discord.js'; import markdownEscape from 'markdown-escape'; import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz'; @@ -9,7 +10,6 @@ import embedInfo from '../core/discord/embedInfo'; import { localizationObject } from '../core/discord/localizationObject'; import { translator } from '../core/localization/translator'; import { CommandRegistry } from '../events/interactionCreate'; -import { ClanList } from '../types/clanList'; const DEFAULT_LIMIT = 25; diff --git a/packages/bot/src/commands/stats.tsx b/packages/bot/src/commands/stats.tsx index bbee1c051..a9ea2db94 100644 --- a/packages/bot/src/commands/stats.tsx +++ b/packages/bot/src/commands/stats.tsx @@ -3,12 +3,12 @@ import { Locale } from 'discord.js'; import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo'; import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL'; -import { filtersToDescription } from '../../../website/src/core/blitzkit/filtersToDescription'; -import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton'; import AllStatsOverview from '../components/AllStatsOverview'; import CommandWrapper from '../components/CommandWrapper'; import NoData from '../components/NoData'; import TitleBar from '../components/TitleBar'; +import { filtersToDescription } from '../core/blitzkit/filtersToDescription'; +import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton'; import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod'; import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions'; import addUsernameChoices from '../core/discord/addUsernameChoices'; diff --git a/packages/bot/src/commands/today.ts b/packages/bot/src/commands/today.ts index 310e58770..de2792cf7 100644 --- a/packages/bot/src/commands/today.ts +++ b/packages/bot/src/commands/today.ts @@ -1,5 +1,5 @@ import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions'; -import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton'; +import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton'; import { addFilterOptions } from '../core/discord/addFilterOptions'; import addUsernameChoices from '../core/discord/addUsernameChoices'; import autocompleteTanks from '../core/discord/autocompleteTanks'; diff --git a/packages/bot/src/components/Breakdown/components/Row.tsx b/packages/bot/src/components/Breakdown/components/Row.tsx index 9cdee1ca5..f45f8313f 100644 --- a/packages/bot/src/components/Breakdown/components/Row.tsx +++ b/packages/bot/src/components/Breakdown/components/Row.tsx @@ -1,4 +1,5 @@ import { TankClass, TreeType } from '@blitzkit/core'; +import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants'; import { Percentile } from '@blitzkit/core/src/statistics/percentiles'; import { createColors } from 'bepaint'; import { @@ -6,7 +7,6 @@ import { GrayColor, PALETTES, } from '../../../core/radix/radixColors'; -import { TREE_TYPE_ICONS } from '../../Tanks/components/Item/constants'; import { RowStat } from './RowStat'; export interface RowStatItem { @@ -82,8 +82,8 @@ export function Row({ ? treeType === 'collector' ? theme.textLowContrast_blue : treeType === 'premium' - ? theme.textLowContrast_amber - : theme.textHighContrast + ? theme.textLowContrast_amber + : theme.textHighContrast : theme.textLowContrast, fontWeight: 900, fontSize: 16, diff --git a/packages/bot/src/components/Tanks/components/Item/constants.ts b/packages/bot/src/components/Tanks/components/Item/constants.ts deleted file mode 100644 index 192818980..000000000 --- a/packages/bot/src/components/Tanks/components/Item/constants.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { - TANK_ICONS, - TANK_ICONS_COLLECTOR, - TANK_ICONS_PREMIUM, - TankClass, - TreeType, -} from '@blitzkit/core'; - -export const TREE_TYPE_NAMES: Record = { - researchable: 'Tech tree', - premium: 'Premium', - collector: 'Collector', -}; -export const TREE_TYPE_IMAGES: Record = { - researchable: 'https://i.imgur.com/pJxO2XY.png', - premium: 'https://i.imgur.com/mZzSwOU.png', - collector: 'https://i.imgur.com/7A0RsG5.png', -}; -export const TREE_TYPE_ICONS: Record> = { - researchable: TANK_ICONS, - premium: TANK_ICONS_PREMIUM, - collector: TANK_ICONS_COLLECTOR, -}; diff --git a/packages/bot/src/components/Tanks/components/Item/index.tsx b/packages/bot/src/components/Tanks/components/Item/index.tsx index b5383dff0..38eec74e2 100644 --- a/packages/bot/src/components/Tanks/components/Item/index.tsx +++ b/packages/bot/src/components/Tanks/components/Item/index.tsx @@ -1,6 +1,6 @@ import { TankClass, TreeType } from '@blitzkit/core'; +import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants'; import { theme } from '../../../../stitches.config'; -import { TREE_TYPE_ICONS } from './constants'; export interface ItemProps { tankType?: TankClass; diff --git a/packages/bot/src/components/TierWeights.tsx b/packages/bot/src/components/TierWeights.tsx index b72059c46..1fbad170c 100644 --- a/packages/bot/src/components/TierWeights.tsx +++ b/packages/bot/src/components/TierWeights.tsx @@ -1,8 +1,6 @@ -import { Tier } from '@blitzkit/core'; +import { TierWeightsRecord } from '@blitzkit/core/src/statistics/getTierWeights'; import { theme } from '../stitches.config'; -export type TierWeightsRecord = Partial>; - interface TierWeightsProps { weights: TierWeightsRecord; } diff --git a/packages/website/src/core/blitz/resolveTankId.ts b/packages/bot/src/core/blitz/resolveTankId.ts similarity index 83% rename from packages/website/src/core/blitz/resolveTankId.ts rename to packages/bot/src/core/blitz/resolveTankId.ts index 285ee0cb6..b08f29ef4 100644 --- a/packages/website/src/core/blitz/resolveTankId.ts +++ b/packages/bot/src/core/blitz/resolveTankId.ts @@ -2,9 +2,9 @@ import { tankDefinitions, tankNames } from '@blitzkit/core'; import { Locale } from 'discord.js'; import { go } from 'fuzzysort'; import markdownEscape from 'markdown-escape'; -import { tankNamesTechTreeOnly } from '../../../../bot/src/core/discord/autocompleteTanks'; -import { translator } from '../../../../bot/src/core/localization/translator'; -import { UserError } from '../../hooks/userError'; +import { UserError } from '../../../../website/src/hooks/userError'; +import { tankNamesTechTreeOnly } from '../discord/autocompleteTanks'; +import { translator } from '../localization/translator'; export default async function resolveTankId( tank: string | number, diff --git a/packages/website/src/core/blitzkit/filtersToDescription.ts b/packages/bot/src/core/blitzkit/filtersToDescription.ts similarity index 92% rename from packages/website/src/core/blitzkit/filtersToDescription.ts rename to packages/bot/src/core/blitzkit/filtersToDescription.ts index ae5f4a7ee..a24f64f38 100644 --- a/packages/website/src/core/blitzkit/filtersToDescription.ts +++ b/packages/bot/src/core/blitzkit/filtersToDescription.ts @@ -5,7 +5,7 @@ import { TIER_ROMAN_NUMERALS, } from '@blitzkit/core'; import { Locale } from 'discord.js'; -import { translator } from '../../../../bot/src/core/localization/translator'; +import { translator } from '../localization/translator'; export async function filtersToDescription( { nation, tier, tankType, treeType, tank }: StatFilters, diff --git a/packages/website/src/core/blitzkit/processes.ts b/packages/bot/src/core/blitzkit/processes.ts similarity index 90% rename from packages/website/src/core/blitzkit/processes.ts rename to packages/bot/src/core/blitzkit/processes.ts index 698ddfada..01d055cd4 100644 --- a/packages/website/src/core/blitzkit/processes.ts +++ b/packages/bot/src/core/blitzkit/processes.ts @@ -1,5 +1,5 @@ import { usersDatabase } from '@blitzkit/core'; -import { client } from '../../../../bot/src/core/discord/client'; +import { client } from '../discord/client'; const EXIT_EVENTS = [ 'beforeExit', diff --git a/packages/website/src/core/blitzstars/getBlitzStarsLinkButton.ts b/packages/bot/src/core/blitzstars/getBlitzStarsLinkButton.ts similarity index 73% rename from packages/website/src/core/blitzstars/getBlitzStarsLinkButton.ts rename to packages/bot/src/core/blitzstars/getBlitzStarsLinkButton.ts index 0152b36e4..0623a105a 100644 --- a/packages/website/src/core/blitzstars/getBlitzStarsLinkButton.ts +++ b/packages/bot/src/core/blitzstars/getBlitzStarsLinkButton.ts @@ -1,6 +1,6 @@ import { Region } from '@blitzkit/core'; -import buttonLink from '../../../../bot/src/core/discord/buttonLink'; -import { getAccountInfo } from '../blitz/getAccountInfo'; +import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo'; +import buttonLink from '../discord/buttonLink'; export async function getBlitzStarsLinkButton( region: Region, diff --git a/packages/website/src/core/blitzstars/getPlayerHistories.ts b/packages/bot/src/core/blitzstars/getPlayerHistories.ts similarity index 92% rename from packages/website/src/core/blitzstars/getPlayerHistories.ts rename to packages/bot/src/core/blitzstars/getPlayerHistories.ts index 3a0c7440f..ce8eb8132 100644 --- a/packages/website/src/core/blitzstars/getPlayerHistories.ts +++ b/packages/bot/src/core/blitzstars/getPlayerHistories.ts @@ -1,11 +1,11 @@ import { Region, emptyAllStats } from '@blitzkit/core'; +import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo'; import { GetHistoriesOptions, Histories, History, getHistoriesDefaultOptions, -} from '../../../../bot/src/types/histories'; -import { getAccountInfo } from '../blitz/getAccountInfo'; +} from '../../types/histories'; import { PlayerStats } from './getPlayerStats'; export default async function getPlayerHistories( @@ -22,7 +22,7 @@ export default async function getPlayerHistories( ({ all: history.statistics.all, last_battle_time: history.last_battle_time, - } satisfies History), + }) satisfies History, ); let lastNonCompliantIndex = -1; let hasCompliedOnce = false; diff --git a/packages/website/src/core/blitzstars/getPlayerStats.ts b/packages/bot/src/core/blitzstars/getPlayerStats.ts similarity index 100% rename from packages/website/src/core/blitzstars/getPlayerStats.ts rename to packages/bot/src/core/blitzstars/getPlayerStats.ts diff --git a/packages/bot/src/core/blitzstars/getStatsInPeriod.ts b/packages/bot/src/core/blitzstars/getStatsInPeriod.ts index 3c6a9a55e..5e92adc6e 100644 --- a/packages/bot/src/core/blitzstars/getStatsInPeriod.ts +++ b/packages/bot/src/core/blitzstars/getStatsInPeriod.ts @@ -1,4 +1,5 @@ import { BlitzStats, emptyAllStats, Region } from '@blitzkit/core'; +import { DiffedTankStats } from '@blitzkit/core/src/statistics/filterStats'; import { Locale } from 'discord.js'; import getTankHistories, { TankHistories, @@ -14,11 +15,6 @@ const emptyTankHistoryNode: TankHistoryRaw = { all: emptyAllStats, }; -export interface DiffedTankStats { - diff: Record; - order: number[]; -} - // BIG TODO: merge this neatly with diffNormalizedTankStats export default async function getStatsInPeriod( server: Region, diff --git a/packages/bot/src/core/discord/autocompleteClan/index.ts b/packages/bot/src/core/discord/autocompleteClan/index.ts index 24d99d4cf..d012b3c6b 100644 --- a/packages/bot/src/core/discord/autocompleteClan/index.ts +++ b/packages/bot/src/core/discord/autocompleteClan/index.ts @@ -1,9 +1,9 @@ +import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions'; import { ApplicationCommandOptionChoiceData, AutocompleteInteraction, CacheType, } from 'discord.js'; -import searchClansAcrossRegions from '../../../../../website/src/core/blitz/searchClansAcrossRegions'; import { translator } from '../../localization/translator'; import { DISCORD_CHOICES_MAX_NAME_SIZE, OVERFLOW_SUFFIX } from './constants'; diff --git a/packages/bot/src/core/discord/getFiltersFromCommand.ts b/packages/bot/src/core/discord/getFiltersFromCommand.ts index 8fc8fd712..f248f7163 100644 --- a/packages/bot/src/core/discord/getFiltersFromCommand.ts +++ b/packages/bot/src/core/discord/getFiltersFromCommand.ts @@ -1,6 +1,6 @@ import { StatFilters, TreeType } from '@blitzkit/core'; import { ChatInputCommandInteraction } from 'discord.js'; -import resolveTankId from '../../../../website/src/core/blitz/resolveTankId'; +import resolveTankId from '../blitz/resolveTankId'; export async function getFiltersFromCommand( interaction: ChatInputCommandInteraction, diff --git a/packages/bot/src/core/discord/resolveClanFromCommand.ts b/packages/bot/src/core/discord/resolveClanFromCommand.ts index 6c6ee0cf3..9c57150d8 100644 --- a/packages/bot/src/core/discord/resolveClanFromCommand.ts +++ b/packages/bot/src/core/discord/resolveClanFromCommand.ts @@ -1,7 +1,7 @@ import { Region } from '@blitzkit/core'; +import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions'; import { ChatInputCommandInteraction } from 'discord.js'; import markdownEscape from 'markdown-escape'; -import searchClansAcrossRegions from '../../../../website/src/core/blitz/searchClansAcrossRegions'; import { UserError } from '../../../../website/src/hooks/userError'; import { translator } from '../localization/translator'; import { serverAndIdPattern } from './resolvePlayerFromCommand/constants'; diff --git a/packages/bot/src/types/ttf.d.ts b/packages/bot/src/types.d.ts similarity index 100% rename from packages/bot/src/types/ttf.d.ts rename to packages/bot/src/types.d.ts diff --git a/packages/bot/src/workers/bot.ts b/packages/bot/src/workers/bot.ts index b139eb403..513ad305e 100644 --- a/packages/bot/src/workers/bot.ts +++ b/packages/bot/src/workers/bot.ts @@ -1,5 +1,5 @@ import { assertSecret } from '@blitzkit/core'; -import { registerProcesses } from '../../../website/src/core/blitzkit/processes'; +import { registerProcesses } from '../core/blitzkit/processes'; import { client } from '../core/discord/client'; console.log(`🟡 Launching bot ${client.shard?.ids[0]}`); diff --git a/packages/bot/tsconfig.json b/packages/bot/tsconfig.json index 4082f16a5..6f36fe638 100644 --- a/packages/bot/tsconfig.json +++ b/packages/bot/tsconfig.json @@ -1,3 +1,7 @@ { + "compilerOptions": { + "noEmit": true, + "declaration": true + }, "extends": "../../tsconfig.json" } diff --git a/packages/bot/src/types/clanList.ts b/packages/core/src/blitz/clans.ts similarity index 100% rename from packages/bot/src/types/clanList.ts rename to packages/core/src/blitz/clans.ts diff --git a/packages/core/src/blitz/index.ts b/packages/core/src/blitz/index.ts index 8a70b1ab5..cb31e160e 100644 --- a/packages/core/src/blitz/index.ts +++ b/packages/core/src/blitz/index.ts @@ -1,9 +1,10 @@ +export * from './clans'; export * from './constants'; export * from './equipmentPrice'; export * from './idToRegion'; -export * from './leagues'; export * from './nations'; export * from './permanentSkills'; export * from './rating'; export * from './regions'; export * from './resolveNearPenetration'; +export * from './searchClansAcrossRegions'; diff --git a/packages/core/src/blitz/leagues.ts b/packages/core/src/blitz/leagues.ts deleted file mode 100644 index 8013e16ec..000000000 --- a/packages/core/src/blitz/leagues.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const LEAGUES = [ - { name: 'diamond', minScore: 5000, index: 0 }, - { name: 'platinum', minScore: 4000, index: 1 }, - { name: 'gold', minScore: 3000, index: 2 }, - { name: 'silver', minScore: 2000, index: 3 }, - { name: 'bronze', minScore: -Infinity, index: 4 }, -]; diff --git a/packages/core/src/blitz/rating.ts b/packages/core/src/blitz/rating.ts index 1cea51187..b4a634a3e 100644 --- a/packages/core/src/blitz/rating.ts +++ b/packages/core/src/blitz/rating.ts @@ -1,2 +1,79 @@ -export const FIRST_MINIMAL_ARCHIVED_RATING_SEASON = 49; +import { RatingPlayer } from '../statistics'; + +export const LEAGUES = [ + { name: 'diamond', minScore: 5000, index: 0 }, + { name: 'platinum', minScore: 4000, index: 1 }, + { name: 'gold', minScore: 3000, index: 2 }, + { name: 'silver', minScore: 2000, index: 3 }, + { name: 'bronze', minScore: -Infinity, index: 4 }, +]; +export type RatingInfo = + | { + detail: undefined; + + title: string; + icon: string | null; + start_at: string; + finish_at: string; + current_season: number; + updated_at: string; + count: number; + + rewards: RatingReward[]; + leagues: RatingLeague[]; + } + | { detail: { error: string } }; +export interface RatingNeighbors { + neighbors: RatingPlayer[]; +} export const FIRST_COMPREHENSIVE1_ARCHIVED_RATING_SEASON = 53; +export const FIRST_MINIMAL_ARCHIVED_RATING_SEASON = 49; +export interface LeagueTop { + result: RatingPlayer[]; +} +export interface RatingLeague { + title: string; + small_icon: string; + big_icon: string; + background: string; + index: number; + percentile: number; +} +export type RatingReward = { + from_position: number; + to_position: number; + count: number; +} & ( + | { + type: 'vehicle'; + + vehicle: { + id: number; + name: string; + nation: string; + subnation: string; + use_subnation_flag: boolean; + type_slug: string; + level: number; + roman_level: string; + user_string: string; + image_url: string; + preview_image_url: string; + is_premium: boolean; + is_collectible: boolean; + }; + } + | { + type: 'stuff'; + + stuff: { + name: string; + count: number; + title: string; + image_url: string; + type: string; + + sizes: {}; + }; + } +); diff --git a/packages/website/src/core/blitz/searchClansAcrossRegions.ts b/packages/core/src/blitz/searchClansAcrossRegions.ts similarity index 92% rename from packages/website/src/core/blitz/searchClansAcrossRegions.ts rename to packages/core/src/blitz/searchClansAcrossRegions.ts index 4a7297da8..41141db84 100644 --- a/packages/website/src/core/blitz/searchClansAcrossRegions.ts +++ b/packages/core/src/blitz/searchClansAcrossRegions.ts @@ -1,6 +1,6 @@ import { Region } from '@blitzkit/core'; -import { ClanList } from '../../../../bot/src/types/clanList'; -import fetchBlitz from './fetchBlitz'; +import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz'; +import { ClanList } from './clans'; export default async function searchClansAcrossRegions( search: string, diff --git a/packages/core/src/blitzkit/tankDefinitions/constants.ts b/packages/core/src/blitzkit/tankDefinitions/constants.ts index 869a507bc..bbf7777c0 100644 --- a/packages/core/src/blitzkit/tankDefinitions/constants.ts +++ b/packages/core/src/blitzkit/tankDefinitions/constants.ts @@ -1,4 +1,11 @@ -import { CrewMember, GunDefinition, ShellType, TankClass, Tier } from '.'; +import { + CrewMember, + GunDefinition, + ShellType, + TankClass, + Tier, + TreeType, +} from '.'; export const SHELL_NAMES: Record = { ap: 'AP', @@ -70,3 +77,8 @@ export const flags: Record = { european: '🇪🇺', other: '<:other:1218421572243558482>', }; +export const TREE_TYPE_ICONS: Record> = { + researchable: TANK_ICONS, + premium: TANK_ICONS_PREMIUM, + collector: TANK_ICONS_COLLECTOR, +}; diff --git a/packages/core/src/blitzstars/index.ts b/packages/core/src/blitzstars/index.ts new file mode 100644 index 000000000..3ffa9db92 --- /dev/null +++ b/packages/core/src/blitzstars/index.ts @@ -0,0 +1 @@ +export * from './tankAverages'; diff --git a/packages/website/src/core/blitzstars/tankAverages.ts b/packages/core/src/blitzstars/tankAverages.ts similarity index 87% rename from packages/website/src/core/blitzstars/tankAverages.ts rename to packages/core/src/blitzstars/tankAverages.ts index 251c62a57..df2ff27db 100644 --- a/packages/website/src/core/blitzstars/tankAverages.ts +++ b/packages/core/src/blitzstars/tankAverages.ts @@ -1,5 +1,5 @@ import { BlitzStats, tankDefinitions } from '@blitzkit/core'; -import { context } from '../blitzkit/context'; +import { context } from '../../../website/src/core/blitzkit/context'; interface SpecialStats { winrate: number; @@ -81,9 +81,9 @@ export interface IndividualTankAverage { tankDefinitions; -export type TankAverages = Record; +export type BlitzStarsTankAverages = Record; -export const tankAverages = fetch( +export const blitzStarsTankAverages = fetch( context === 'website' ? '/api/tank-averages' : 'https://www.blitzstars.com/api/tankaverages.json', @@ -91,7 +91,7 @@ export const tankAverages = fetch( .then((response) => response.json()) .then((json) => { if (context === 'server') { - const partialTankAverages: TankAverages = {}; + const partialTankAverages: BlitzStarsTankAverages = {}; (json as IndividualTankAverage[]).forEach((individualTankAverage) => { partialTankAverages[individualTankAverage.tank_id] = @@ -100,6 +100,6 @@ export const tankAverages = fetch( return partialTankAverages; } else { - return json as TankAverages; + return json as BlitzStarsTankAverages; } }); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 897b82ae4..002627c07 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,5 +1,6 @@ export * from './blitz'; export * from './blitzkit'; +export * from './blitzstars'; export * from './databases'; export * from './imgur'; export * from './math'; diff --git a/packages/core/src/radix/var.ts b/packages/core/src/radix/var.ts index af13ad7cb..c83443d11 100644 --- a/packages/core/src/radix/var.ts +++ b/packages/core/src/radix/var.ts @@ -1,7 +1,8 @@ type Name = | `color-${'background' | `panel-${'solid' | 'translucent'}` | 'surface' | 'overlay'}` | `radius-${1 | 2 | 3 | 4 | 5 | 6 | 'full'}` - | `space-${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`; + | `space-${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` + | string; export function Var(name: Name) { return `var(--${name})`; diff --git a/packages/core/src/statistics/deltaBkrlBlitzStats.ts b/packages/core/src/statistics/deltaBkrlBlitzStats.ts index db82f8672..e223626c6 100644 --- a/packages/core/src/statistics/deltaBkrlBlitzStats.ts +++ b/packages/core/src/statistics/deltaBkrlBlitzStats.ts @@ -1,4 +1,3 @@ -import { RatingPlayer } from '../../../bot/src/commands/ratingLeaderboard'; import { RatingStats } from '../../../website/src/core/blitz/getAccountInfo'; import { BkrlSuperset1Entry } from '../streams/bkrl'; @@ -16,3 +15,16 @@ export function deltaBkrlBlitzStats( score: b2.score - a.score, } satisfies Omit; } +export interface RatingPlayer { + spa_id: number; + mmr: number; + season_number: number; + calibrationBattlesLeft: number; + number: number; + percentile: number; + skip: boolean; + updated_at: string; + score: number; + nickname: string; + clan_tag: string; +} diff --git a/packages/core/src/statistics/filterStats.ts b/packages/core/src/statistics/filterStats.ts index 2a1b16da5..9ca660e26 100644 --- a/packages/core/src/statistics/filterStats.ts +++ b/packages/core/src/statistics/filterStats.ts @@ -1,8 +1,8 @@ -import { DiffedTankStats } from '../../../bot/src/core/blitzstars/getStatsInPeriod'; import { SupplementaryStats } from '../../../website/src/core/blitz/getAccountInfo'; -import { tankAverages } from '../../../website/src/core/blitzstars/tankAverages'; import { tankDefinitions, TreeType } from '../blitzkit/tankDefinitions'; +import { blitzStarsTankAverages } from '../blitzstars/tankAverages'; import calculateWN8 from './calculateWN8'; +import { BlitzStats } from './compositeStats'; import sumStats from './sumStats'; export interface StatFilters { @@ -21,7 +21,7 @@ export async function filterStats( if (filters.tank) filters = { tank: filters.tank }; const awaitedTankDefinitions = await tankDefinitions; - const awaitedTankAverages = await tankAverages; + const awaitedTankAverages = await blitzStarsTankAverages; const filteredOrder = order.filter((id) => { const entry = awaitedTankDefinitions[id]; @@ -72,3 +72,8 @@ export async function filterStats( return { stats, supplementary, filteredOrder }; } + +export interface DiffedTankStats { + diff: Record; + order: number[]; +} diff --git a/packages/core/src/statistics/getTierWeights.ts b/packages/core/src/statistics/getTierWeights.ts index 138937f48..96e73f8cc 100644 --- a/packages/core/src/statistics/getTierWeights.ts +++ b/packages/core/src/statistics/getTierWeights.ts @@ -1,5 +1,4 @@ -import { TierWeightsRecord } from '../../../bot/src/components/TierWeights'; -import { tankDefinitions } from '../blitzkit/tankDefinitions'; +import { tankDefinitions, Tier } from '../blitzkit/tankDefinitions'; import { BlitzStats } from './compositeStats/constants'; export async function getTierWeights( @@ -20,3 +19,4 @@ export async function getTierWeights( return tierWeights; } +export type TierWeightsRecord = Partial>; diff --git a/packages/core/src/types/proto.d.ts b/packages/core/src/types/proto.d.ts deleted file mode 100644 index aa9769548..000000000 --- a/packages/core/src/types/proto.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.proto' { - const value: string; - export default value; -} diff --git a/packages/scripts/src/buildRatingLeaderboard.ts b/packages/scripts/src/buildRatingLeaderboard.ts index 44ff39073..11f54f303 100644 --- a/packages/scripts/src/buildRatingLeaderboard.ts +++ b/packages/scripts/src/buildRatingLeaderboard.ts @@ -8,13 +8,10 @@ import { RegionSubdomain, superCompress, } from '@blitzkit/core'; +import { RatingInfo, RatingNeighbors } from '@blitzkit/core/src/blitz/leagues'; +import { RatingPlayer } from '@blitzkit/core/src/statistics/deltaBkrlBlitzStats'; import { chunk } from 'lodash'; import { argv } from 'process'; -import { - RatingInfo, - RatingNeighbors, - RatingPlayer, -} from '../../bot/src/commands/ratingLeaderboard'; import { getAccountInfo } from '../../website/src/core/blitz/getAccountInfo'; import regionSubdomainToRegion from '../../website/src/core/blitz/regionSubdomainToRegion'; import { patientFetchJSON } from '../../website/src/core/blitzkit/patientFetchJSON'; diff --git a/packages/website/src/app/api/tank-averages/route.ts b/packages/website/src/app/api/tank-averages/route.ts index 7f5ab96bf..f9e73a98f 100644 --- a/packages/website/src/app/api/tank-averages/route.ts +++ b/packages/website/src/app/api/tank-averages/route.ts @@ -1,6 +1,6 @@ +import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages'; import { NextResponse } from 'next/server'; -import { tankAverages } from '../../../core/blitzstars/tankAverages'; export async function GET() { - return NextResponse.json(await tankAverages); + return NextResponse.json(await blitzStarsTankAverages); } diff --git a/packages/website/src/app/tools/compare/components/CompareRow.tsx b/packages/website/src/app/tools/compare/components/CompareRow.tsx index 6ba15ccb1..93d605a21 100644 --- a/packages/website/src/app/tools/compare/components/CompareRow.tsx +++ b/packages/website/src/app/tools/compare/components/CompareRow.tsx @@ -1,11 +1,10 @@ -import { TankCharacteristics } from '@blitzkit/core'; +import { TankCharacteristics, Var } from '@blitzkit/core'; import { CaretLeftIcon, CaretRightIcon, CaretSortIcon, } from '@radix-ui/react-icons'; import { Flex, IconButton, Table, Text } from '@radix-ui/themes'; -import { theme } from '../../../../../../bot/src/stitches.config'; import { StickyRowHeaderCell } from '../../../../components/StickyRowHeaderCell'; import * as CompareEphemeral from '../../../../stores/compareEphemeral'; import * as ComparePersistent from '../../../../stores/comparePersistent'; @@ -103,8 +102,8 @@ export function CompareRow({ const resolvedDisplayValue = display ? display(stats[index]) : decimals === undefined - ? value - : value?.toFixed(decimals); + ? value + : value?.toFixed(decimals); return ( values[0] - : value < values[0] - ) - ? `color-mix(in srgb, ${theme.colors.componentCallToActionInteractive_green} ${normalizedDeltaPercentage}%, ${theme.colors.componentCallToActionInteractive_green}00)` - : `color-mix(in srgb, ${theme.colors.componentCallToActionInteractive_red} ${normalizedDeltaPercentage}%, ${theme.colors.componentCallToActionInteractive_red}00)`, + deltaType === 'higherIsBetter' + ? value > values[0] + : value < values[0] + ) + ? `color-mix(in srgb, ${Var('green-7')} ${normalizedDeltaPercentage}%, ${Var('green-3')})` + : `color-mix(in srgb, ${Var('red-7')} ${normalizedDeltaPercentage}%, ${Var('red-3')})`, }} > diff --git a/packages/website/src/app/tools/compare/components/CompareTable.tsx b/packages/website/src/app/tools/compare/components/CompareTable.tsx index fbafab3f5..6a8d41739 100644 --- a/packages/website/src/app/tools/compare/components/CompareTable.tsx +++ b/packages/website/src/app/tools/compare/components/CompareTable.tsx @@ -1,5 +1,6 @@ import { TankCharacteristics, + Var, asset, availableProvisions, checkConsumableProvisionInclusivity, @@ -13,7 +14,6 @@ import { ComponentPlaceholderIcon } from '@radix-ui/react-icons'; import { Button, Flex, Popover, Slider, Table, Text } from '@radix-ui/themes'; import { debounce, times } from 'lodash'; import { use } from 'react'; -import { theme } from '../../../../../../bot/src/stitches.config'; import { BlitzkitButtonGrayIcon } from '../../../../components/BlitzkitButtonGrayIcon'; import { ConsumablesManager } from '../../../../components/ConsumablesManager'; import { CrewSkillManager } from '../../../../components/CrewSkillManager'; @@ -83,12 +83,7 @@ export function CompareTable({ stats }: CompareTableProps) {