mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
fix: no cross-bot imports
This commit is contained in:
1 parent
6c0b46725d
commit
7c6f381bbe
58 files changed
+233
-252
No files matched your search
+2
-1
@@ -4,6 +4,7 @@
|
|||||||
"version": "1.22.6",
|
"version": "1.22.6",
|
||||||
"description": "🎉 Tools for everything World of Tanks Blitz",
|
"description": "🎉 Tools for everything World of Tanks Blitz",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"types": "./types.d.ts",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
],
|
],
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
"build:assets": "bun --filter=@blitzkit/scripts run build:assets",
|
"build:assets": "bun --filter=@blitzkit/scripts run build:assets",
|
||||||
"build:averages": "bun --filter=@blitzkit/scripts run build:averages",
|
"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: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:sitemap": "bun scripts/sitemap.ts",
|
||||||
"build:docs": "vitepress build docs",
|
"build:docs": "vitepress build docs",
|
||||||
"build:ratingleaderboard": "bun --script scripts/buildRatingLeaderboard.ts",
|
"build:ratingleaderboard": "bun --script scripts/buildRatingLeaderboard.ts",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
"name": "@blitzkit/bot",
|
"name": "@blitzkit/bot",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"types": "src/types.d.ts",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blitzkit/core": "workspace:*",
|
"@blitzkit/core": "workspace:*",
|
||||||
"satori": "^0.10.14",
|
"satori": "^0.10.14",
|
||||||
|
|||||||
@@ -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 addPeriodicFilterOptions from '../../core/discord/addPeriodicFilterOptions';
|
||||||
import addUsernameChoices from '../../core/discord/addUsernameChoices';
|
import addUsernameChoices from '../../core/discord/addUsernameChoices';
|
||||||
import autocompleteTanks from '../../core/discord/autocompleteTanks';
|
import autocompleteTanks from '../../core/discord/autocompleteTanks';
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
TankDefinition,
|
TankDefinition,
|
||||||
tankDefinitions,
|
tankDefinitions,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
|
import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages';
|
||||||
import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
|
import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
|
||||||
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
|
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
|
||||||
import { Locale } from 'discord.js';
|
import { Locale } from 'discord.js';
|
||||||
@@ -12,13 +13,12 @@ import { chunk } from 'lodash';
|
|||||||
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getClanAccountInfo } from '../../../../website/src/core/blitz/getClanAccountInfo';
|
import { getClanAccountInfo } from '../../../../website/src/core/blitz/getClanAccountInfo';
|
||||||
import getTankStats from '../../../../website/src/core/blitz/getTankStats';
|
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 { UserError } from '../../../../website/src/hooks/userError';
|
||||||
import * as Breakdown from '../../components/Breakdown';
|
import * as Breakdown from '../../components/Breakdown';
|
||||||
import CommandWrapper from '../../components/CommandWrapper';
|
import CommandWrapper from '../../components/CommandWrapper';
|
||||||
import NoData from '../../components/NoData';
|
import NoData from '../../components/NoData';
|
||||||
import TitleBar from '../../components/TitleBar';
|
import TitleBar from '../../components/TitleBar';
|
||||||
|
import { filtersToDescription } from '../../core/blitzkit/filtersToDescription';
|
||||||
import getStatsInPeriod from '../../core/blitzstars/getStatsInPeriod';
|
import getStatsInPeriod from '../../core/blitzstars/getStatsInPeriod';
|
||||||
import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand';
|
import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand';
|
||||||
import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand';
|
import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand';
|
||||||
@@ -35,7 +35,7 @@ export async function renderBreakdown(
|
|||||||
) {
|
) {
|
||||||
const { t, translate } = translator(locale);
|
const { t, translate } = translator(locale);
|
||||||
const awaitedTankDefinitions = await tankDefinitions;
|
const awaitedTankDefinitions = await tankDefinitions;
|
||||||
const awaitedTankAverages = await tankAverages;
|
const awaitedTankAverages = await blitzStarsTankAverages;
|
||||||
const statsInPeriod = await getStatsInPeriod(region, id, start, end, locale);
|
const statsInPeriod = await getStatsInPeriod(region, id, start, end, locale);
|
||||||
const { filteredOrder } = await filterStats(statsInPeriod, filters);
|
const { filteredOrder } = await filterStats(statsInPeriod, filters);
|
||||||
const accountInfo = await getAccountInfo(region, id);
|
const accountInfo = await getAccountInfo(region, id);
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { Locale, SlashCommandSubcommandGroupBuilder } from 'discord.js';
|
import { Locale, SlashCommandSubcommandGroupBuilder } from 'discord.js';
|
||||||
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
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 { 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 CommandWrapper from '../components/CommandWrapper';
|
||||||
import * as Graph from '../components/Graph';
|
import * as Graph from '../components/Graph';
|
||||||
import { LineColor } from '../components/Graph/components/Line/constants';
|
import { LineColor } from '../components/Graph/components/Line/constants';
|
||||||
import NoData from '../components/NoData';
|
import NoData from '../components/NoData';
|
||||||
import TitleBar from '../components/TitleBar';
|
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 getTankHistories from '../core/blitzstars/getTankHistories';
|
||||||
import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands';
|
import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands';
|
||||||
import addTankChoices from '../core/discord/addTankChoices';
|
import addTankChoices from '../core/discord/addTankChoices';
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ import { Locale } from 'discord.js';
|
|||||||
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
||||||
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
|
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 CommandWrapper from '../components/CommandWrapper';
|
||||||
import GenericAllStats from '../components/GenericAllStats';
|
import GenericAllStats from '../components/GenericAllStats';
|
||||||
import NoData from '../components/NoData';
|
import NoData from '../components/NoData';
|
||||||
import TierWeights from '../components/TierWeights';
|
import TierWeights from '../components/TierWeights';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
|
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
|
||||||
|
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
|
||||||
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
|
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
|
||||||
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
|
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
|
||||||
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import {
|
|||||||
BkrlDiscriminatedEntries,
|
BkrlDiscriminatedEntries,
|
||||||
FIRST_MINIMAL_ARCHIVED_RATING_SEASON,
|
FIRST_MINIMAL_ARCHIVED_RATING_SEASON,
|
||||||
LEAGUES,
|
LEAGUES,
|
||||||
|
RatingInfo,
|
||||||
Region,
|
Region,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
import {
|
import {
|
||||||
@@ -34,93 +35,6 @@ import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
|
|||||||
import { translator } from '../core/localization/translator';
|
import { translator } from '../core/localization/translator';
|
||||||
import { CommandRegistry } from '../events/interactionCreate';
|
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 {
|
interface SimplifiedPlayer {
|
||||||
id: number;
|
id: number;
|
||||||
score: number;
|
score: number;
|
||||||
@@ -256,7 +170,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
|
|||||||
name_localizations: localizationObject(
|
name_localizations: localizationObject(
|
||||||
`common.leagues.${name}`,
|
`common.leagues.${name}`,
|
||||||
),
|
),
|
||||||
} satisfies APIApplicationCommandOptionChoice<string>),
|
}) satisfies APIApplicationCommandOptionChoice<string>,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.setRequired(true);
|
.setRequired(true);
|
||||||
@@ -279,8 +193,8 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
|
|||||||
const season = seasonOption
|
const season = seasonOption
|
||||||
? parseInt(seasonOption)
|
? parseInt(seasonOption)
|
||||||
: onGoingSeason
|
: onGoingSeason
|
||||||
? latestArchivedSeasonNumber + 1
|
? latestArchivedSeasonNumber + 1
|
||||||
: latestArchivedSeasonNumber;
|
: latestArchivedSeasonNumber;
|
||||||
const isCurrentSeason = season === latestArchivedSeasonNumber + 1;
|
const isCurrentSeason = season === latestArchivedSeasonNumber + 1;
|
||||||
let titleName: string;
|
let titleName: string;
|
||||||
let titleImage: string | undefined;
|
let titleImage: string | undefined;
|
||||||
@@ -313,7 +227,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
|
|||||||
position: player.number,
|
position: player.number,
|
||||||
clan: player.clan_tag,
|
clan: player.clan_tag,
|
||||||
nickname: player.nickname,
|
nickname: player.nickname,
|
||||||
} satisfies SimplifiedPlayer),
|
}) satisfies SimplifiedPlayer,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: await getArchivedRatingLeaderboard(region, season!).then(
|
: await getArchivedRatingLeaderboard(region, season!).then(
|
||||||
@@ -349,7 +263,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
|
|||||||
'bot.commands.rating_leaderboard.body.deleted_player',
|
'bot.commands.rating_leaderboard.body.deleted_player',
|
||||||
[`${player.id}`],
|
[`${player.id}`],
|
||||||
),
|
),
|
||||||
} satisfies SimplifiedPlayer),
|
}) satisfies SimplifiedPlayer,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -398,7 +312,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
|
|||||||
score: player.score,
|
score: player.score,
|
||||||
clan: player.clan_tag,
|
clan: player.clan_tag,
|
||||||
nickname: player.nickname,
|
nickname: player.nickname,
|
||||||
} satisfies SimplifiedPlayer),
|
}) satisfies SimplifiedPlayer,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: await getArchivedRatingLeaderboard(region, season!).then(
|
: await getArchivedRatingLeaderboard(region, season!).then(
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
TIER_ROMAN_NUMERALS,
|
TIER_ROMAN_NUMERALS,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
import { tankIcon } from '@blitzkit/core/src/blitzkit/tankIcon';
|
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 calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
|
||||||
import { clamp } from 'lodash';
|
import { clamp } from 'lodash';
|
||||||
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
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 { iconPng } from '../../../website/src/core/blitzkit/iconPng';
|
||||||
import { mapDefinitions } from '../../../website/src/core/blitzkit/mapDefinitions';
|
import { mapDefinitions } from '../../../website/src/core/blitzkit/mapDefinitions';
|
||||||
import { RenderConfiguration } from '../../../website/src/core/blitzkit/renderConfiguration';
|
import { RenderConfiguration } from '../../../website/src/core/blitzkit/renderConfiguration';
|
||||||
import { tankAverages } from '../../../website/src/core/blitzstars/tankAverages';
|
|
||||||
import CommandWrapper from '../components/CommandWrapper';
|
import CommandWrapper from '../components/CommandWrapper';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import buttonLink from '../core/discord/buttonLink';
|
import buttonLink from '../core/discord/buttonLink';
|
||||||
@@ -221,7 +221,7 @@ async function playerListing(
|
|||||||
winningTeam: number,
|
winningTeam: number,
|
||||||
recordingPlayer = false,
|
recordingPlayer = false,
|
||||||
) {
|
) {
|
||||||
const awaitedTankAverages = await tankAverages;
|
const awaitedTankAverages = await blitzStarsTankAverages;
|
||||||
const awaitedTankDefinitions = await tankDefinitions;
|
const awaitedTankDefinitions = await tankDefinitions;
|
||||||
const tank = awaitedTankDefinitions[player.vehicle_descr];
|
const tank = awaitedTankDefinitions[player.vehicle_descr];
|
||||||
const blockAccent = recordingPlayer ? '_amber' : '';
|
const blockAccent = recordingPlayer ? '_amber' : '';
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { escapeMarkdown, Locale } from 'discord.js';
|
|||||||
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
||||||
import getTankStats from '../../../website/src/core/blitz/getTankStats';
|
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 { buildTechTreeLine } from '../../../website/src/core/blitzkit/buildTechTreeLine';
|
||||||
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
|
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
|
||||||
import { iconPng } from '../../../website/src/core/blitzkit/iconPng';
|
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 { tankIconPng } from '../../../website/src/core/blitzkit/tankIconPng';
|
||||||
import CommandWrapper from '../components/CommandWrapper';
|
import CommandWrapper from '../components/CommandWrapper';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
|
import resolveTankId from '../core/blitz/resolveTankId';
|
||||||
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
||||||
import autocompleteTanks from '../core/discord/autocompleteTanks';
|
import autocompleteTanks from '../core/discord/autocompleteTanks';
|
||||||
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
|
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { Region } from '@blitzkit/core';
|
||||||
|
import { ClanList } from '@blitzkit/core/src/blitz/clanList';
|
||||||
import { Locale } from 'discord.js';
|
import { Locale } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz';
|
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 { localizationObject } from '../core/discord/localizationObject';
|
||||||
import { translator } from '../core/localization/translator';
|
import { translator } from '../core/localization/translator';
|
||||||
import { CommandRegistry } from '../events/interactionCreate';
|
import { CommandRegistry } from '../events/interactionCreate';
|
||||||
import { ClanList } from '../types/clanList';
|
|
||||||
|
|
||||||
const DEFAULT_LIMIT = 25;
|
const DEFAULT_LIMIT = 25;
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import { Locale } from 'discord.js';
|
|||||||
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
|
||||||
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
|
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 AllStatsOverview from '../components/AllStatsOverview';
|
||||||
import CommandWrapper from '../components/CommandWrapper';
|
import CommandWrapper from '../components/CommandWrapper';
|
||||||
import NoData from '../components/NoData';
|
import NoData from '../components/NoData';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
|
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
|
||||||
|
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
|
||||||
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
|
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
|
||||||
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
|
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
|
||||||
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions';
|
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 { addFilterOptions } from '../core/discord/addFilterOptions';
|
||||||
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
import addUsernameChoices from '../core/discord/addUsernameChoices';
|
||||||
import autocompleteTanks from '../core/discord/autocompleteTanks';
|
import autocompleteTanks from '../core/discord/autocompleteTanks';
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { TankClass, TreeType } from '@blitzkit/core';
|
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 { Percentile } from '@blitzkit/core/src/statistics/percentiles';
|
||||||
import { createColors } from 'bepaint';
|
import { createColors } from 'bepaint';
|
||||||
import {
|
import {
|
||||||
@@ -6,7 +7,6 @@ import {
|
|||||||
GrayColor,
|
GrayColor,
|
||||||
PALETTES,
|
PALETTES,
|
||||||
} from '../../../core/radix/radixColors';
|
} from '../../../core/radix/radixColors';
|
||||||
import { TREE_TYPE_ICONS } from '../../Tanks/components/Item/constants';
|
|
||||||
import { RowStat } from './RowStat';
|
import { RowStat } from './RowStat';
|
||||||
|
|
||||||
export interface RowStatItem {
|
export interface RowStatItem {
|
||||||
@@ -82,8 +82,8 @@ export function Row({
|
|||||||
? treeType === 'collector'
|
? treeType === 'collector'
|
||||||
? theme.textLowContrast_blue
|
? theme.textLowContrast_blue
|
||||||
: treeType === 'premium'
|
: treeType === 'premium'
|
||||||
? theme.textLowContrast_amber
|
? theme.textLowContrast_amber
|
||||||
: theme.textHighContrast
|
: theme.textHighContrast
|
||||||
: theme.textLowContrast,
|
: theme.textLowContrast,
|
||||||
fontWeight: 900,
|
fontWeight: 900,
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
import {
|
|
||||||
TANK_ICONS,
|
|
||||||
TANK_ICONS_COLLECTOR,
|
|
||||||
TANK_ICONS_PREMIUM,
|
|
||||||
TankClass,
|
|
||||||
TreeType,
|
|
||||||
} from '@blitzkit/core';
|
|
||||||
|
|
||||||
export const TREE_TYPE_NAMES: Record<TreeType, string> = {
|
|
||||||
researchable: 'Tech tree',
|
|
||||||
premium: 'Premium',
|
|
||||||
collector: 'Collector',
|
|
||||||
};
|
|
||||||
export const TREE_TYPE_IMAGES: Record<TreeType, string> = {
|
|
||||||
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<TreeType, Record<TankClass, string>> = {
|
|
||||||
researchable: TANK_ICONS,
|
|
||||||
premium: TANK_ICONS_PREMIUM,
|
|
||||||
collector: TANK_ICONS_COLLECTOR,
|
|
||||||
};
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { TankClass, TreeType } from '@blitzkit/core';
|
import { TankClass, TreeType } from '@blitzkit/core';
|
||||||
|
import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants';
|
||||||
import { theme } from '../../../../stitches.config';
|
import { theme } from '../../../../stitches.config';
|
||||||
import { TREE_TYPE_ICONS } from './constants';
|
|
||||||
|
|
||||||
export interface ItemProps {
|
export interface ItemProps {
|
||||||
tankType?: TankClass;
|
tankType?: TankClass;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { Tier } from '@blitzkit/core';
|
import { TierWeightsRecord } from '@blitzkit/core/src/statistics/getTierWeights';
|
||||||
import { theme } from '../stitches.config';
|
import { theme } from '../stitches.config';
|
||||||
|
|
||||||
export type TierWeightsRecord = Partial<Record<Tier, number>>;
|
|
||||||
|
|
||||||
interface TierWeightsProps {
|
interface TierWeightsProps {
|
||||||
weights: TierWeightsRecord;
|
weights: TierWeightsRecord;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@ import { tankDefinitions, tankNames } from '@blitzkit/core';
|
|||||||
import { Locale } from 'discord.js';
|
import { Locale } from 'discord.js';
|
||||||
import { go } from 'fuzzysort';
|
import { go } from 'fuzzysort';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import { tankNamesTechTreeOnly } from '../../../../bot/src/core/discord/autocompleteTanks';
|
import { UserError } from '../../../../website/src/hooks/userError';
|
||||||
import { translator } from '../../../../bot/src/core/localization/translator';
|
import { tankNamesTechTreeOnly } from '../discord/autocompleteTanks';
|
||||||
import { UserError } from '../../hooks/userError';
|
import { translator } from '../localization/translator';
|
||||||
|
|
||||||
export default async function resolveTankId(
|
export default async function resolveTankId(
|
||||||
tank: string | number,
|
tank: string | number,
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import {
|
|||||||
TIER_ROMAN_NUMERALS,
|
TIER_ROMAN_NUMERALS,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
import { Locale } from 'discord.js';
|
import { Locale } from 'discord.js';
|
||||||
import { translator } from '../../../../bot/src/core/localization/translator';
|
import { translator } from '../localization/translator';
|
||||||
|
|
||||||
export async function filtersToDescription(
|
export async function filtersToDescription(
|
||||||
{ nation, tier, tankType, treeType, tank }: StatFilters,
|
{ nation, tier, tankType, treeType, tank }: StatFilters,
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import { usersDatabase } from '@blitzkit/core';
|
import { usersDatabase } from '@blitzkit/core';
|
||||||
import { client } from '../../../../bot/src/core/discord/client';
|
import { client } from '../discord/client';
|
||||||
|
|
||||||
const EXIT_EVENTS = [
|
const EXIT_EVENTS = [
|
||||||
'beforeExit',
|
'beforeExit',
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { Region } from '@blitzkit/core';
|
||||||
import buttonLink from '../../../../bot/src/core/discord/buttonLink';
|
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { getAccountInfo } from '../blitz/getAccountInfo';
|
import buttonLink from '../discord/buttonLink';
|
||||||
|
|
||||||
export async function getBlitzStarsLinkButton(
|
export async function getBlitzStarsLinkButton(
|
||||||
region: Region,
|
region: Region,
|
||||||
+3
-3
@@ -1,11 +1,11 @@
|
|||||||
import { Region, emptyAllStats } from '@blitzkit/core';
|
import { Region, emptyAllStats } from '@blitzkit/core';
|
||||||
|
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
|
||||||
import {
|
import {
|
||||||
GetHistoriesOptions,
|
GetHistoriesOptions,
|
||||||
Histories,
|
Histories,
|
||||||
History,
|
History,
|
||||||
getHistoriesDefaultOptions,
|
getHistoriesDefaultOptions,
|
||||||
} from '../../../../bot/src/types/histories';
|
} from '../../types/histories';
|
||||||
import { getAccountInfo } from '../blitz/getAccountInfo';
|
|
||||||
import { PlayerStats } from './getPlayerStats';
|
import { PlayerStats } from './getPlayerStats';
|
||||||
|
|
||||||
export default async function getPlayerHistories(
|
export default async function getPlayerHistories(
|
||||||
@@ -22,7 +22,7 @@ export default async function getPlayerHistories(
|
|||||||
({
|
({
|
||||||
all: history.statistics.all,
|
all: history.statistics.all,
|
||||||
last_battle_time: history.last_battle_time,
|
last_battle_time: history.last_battle_time,
|
||||||
} satisfies History),
|
}) satisfies History,
|
||||||
);
|
);
|
||||||
let lastNonCompliantIndex = -1;
|
let lastNonCompliantIndex = -1;
|
||||||
let hasCompliedOnce = false;
|
let hasCompliedOnce = false;
|
||||||
File renamed without changes.
@@ -1,4 +1,5 @@
|
|||||||
import { BlitzStats, emptyAllStats, Region } from '@blitzkit/core';
|
import { BlitzStats, emptyAllStats, Region } from '@blitzkit/core';
|
||||||
|
import { DiffedTankStats } from '@blitzkit/core/src/statistics/filterStats';
|
||||||
import { Locale } from 'discord.js';
|
import { Locale } from 'discord.js';
|
||||||
import getTankHistories, {
|
import getTankHistories, {
|
||||||
TankHistories,
|
TankHistories,
|
||||||
@@ -14,11 +15,6 @@ const emptyTankHistoryNode: TankHistoryRaw = {
|
|||||||
all: emptyAllStats,
|
all: emptyAllStats,
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface DiffedTankStats {
|
|
||||||
diff: Record<number, BlitzStats>;
|
|
||||||
order: number[];
|
|
||||||
}
|
|
||||||
|
|
||||||
// BIG TODO: merge this neatly with diffNormalizedTankStats
|
// BIG TODO: merge this neatly with diffNormalizedTankStats
|
||||||
export default async function getStatsInPeriod(
|
export default async function getStatsInPeriod(
|
||||||
server: Region,
|
server: Region,
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions';
|
||||||
import {
|
import {
|
||||||
ApplicationCommandOptionChoiceData,
|
ApplicationCommandOptionChoiceData,
|
||||||
AutocompleteInteraction,
|
AutocompleteInteraction,
|
||||||
CacheType,
|
CacheType,
|
||||||
} from 'discord.js';
|
} from 'discord.js';
|
||||||
import searchClansAcrossRegions from '../../../../../website/src/core/blitz/searchClansAcrossRegions';
|
|
||||||
import { translator } from '../../localization/translator';
|
import { translator } from '../../localization/translator';
|
||||||
import { DISCORD_CHOICES_MAX_NAME_SIZE, OVERFLOW_SUFFIX } from './constants';
|
import { DISCORD_CHOICES_MAX_NAME_SIZE, OVERFLOW_SUFFIX } from './constants';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { StatFilters, TreeType } from '@blitzkit/core';
|
import { StatFilters, TreeType } from '@blitzkit/core';
|
||||||
import { ChatInputCommandInteraction } from 'discord.js';
|
import { ChatInputCommandInteraction } from 'discord.js';
|
||||||
import resolveTankId from '../../../../website/src/core/blitz/resolveTankId';
|
import resolveTankId from '../blitz/resolveTankId';
|
||||||
|
|
||||||
export async function getFiltersFromCommand(
|
export async function getFiltersFromCommand(
|
||||||
interaction: ChatInputCommandInteraction,
|
interaction: ChatInputCommandInteraction,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { Region } from '@blitzkit/core';
|
||||||
|
import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions';
|
||||||
import { ChatInputCommandInteraction } from 'discord.js';
|
import { ChatInputCommandInteraction } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import searchClansAcrossRegions from '../../../../website/src/core/blitz/searchClansAcrossRegions';
|
|
||||||
import { UserError } from '../../../../website/src/hooks/userError';
|
import { UserError } from '../../../../website/src/hooks/userError';
|
||||||
import { translator } from '../localization/translator';
|
import { translator } from '../localization/translator';
|
||||||
import { serverAndIdPattern } from './resolvePlayerFromCommand/constants';
|
import { serverAndIdPattern } from './resolvePlayerFromCommand/constants';
|
||||||
|
|||||||
File renamed without changes.
@@ -1,5 +1,5 @@
|
|||||||
import { assertSecret } from '@blitzkit/core';
|
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';
|
import { client } from '../core/discord/client';
|
||||||
|
|
||||||
console.log(`🟡 Launching bot ${client.shard?.ids[0]}`);
|
console.log(`🟡 Launching bot ${client.shard?.ids[0]}`);
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"noEmit": true,
|
||||||
|
"declaration": true
|
||||||
|
},
|
||||||
"extends": "../../tsconfig.json"
|
"extends": "../../tsconfig.json"
|
||||||
}
|
}
|
||||||
File renamed without changes.
@@ -1,9 +1,10 @@
|
|||||||
|
export * from './clans';
|
||||||
export * from './constants';
|
export * from './constants';
|
||||||
export * from './equipmentPrice';
|
export * from './equipmentPrice';
|
||||||
export * from './idToRegion';
|
export * from './idToRegion';
|
||||||
export * from './leagues';
|
|
||||||
export * from './nations';
|
export * from './nations';
|
||||||
export * from './permanentSkills';
|
export * from './permanentSkills';
|
||||||
export * from './rating';
|
export * from './rating';
|
||||||
export * from './regions';
|
export * from './regions';
|
||||||
export * from './resolveNearPenetration';
|
export * from './resolveNearPenetration';
|
||||||
|
export * from './searchClansAcrossRegions';
|
||||||
@@ -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 },
|
|
||||||
];
|
|
||||||
@@ -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_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: {};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { Region } from '@blitzkit/core';
|
||||||
import { ClanList } from '../../../../bot/src/types/clanList';
|
import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz';
|
||||||
import fetchBlitz from './fetchBlitz';
|
import { ClanList } from './clans';
|
||||||
|
|
||||||
export default async function searchClansAcrossRegions(
|
export default async function searchClansAcrossRegions(
|
||||||
search: string,
|
search: string,
|
||||||
@@ -1,4 +1,11 @@
|
|||||||
import { CrewMember, GunDefinition, ShellType, TankClass, Tier } from '.';
|
import {
|
||||||
|
CrewMember,
|
||||||
|
GunDefinition,
|
||||||
|
ShellType,
|
||||||
|
TankClass,
|
||||||
|
Tier,
|
||||||
|
TreeType,
|
||||||
|
} from '.';
|
||||||
|
|
||||||
export const SHELL_NAMES: Record<ShellType, string> = {
|
export const SHELL_NAMES: Record<ShellType, string> = {
|
||||||
ap: 'AP',
|
ap: 'AP',
|
||||||
@@ -70,3 +77,8 @@ export const flags: Record<string, string> = {
|
|||||||
european: '🇪🇺',
|
european: '🇪🇺',
|
||||||
other: '<:other:1218421572243558482>',
|
other: '<:other:1218421572243558482>',
|
||||||
};
|
};
|
||||||
|
export const TREE_TYPE_ICONS: Record<TreeType, Record<TankClass, string>> = {
|
||||||
|
researchable: TANK_ICONS,
|
||||||
|
premium: TANK_ICONS_PREMIUM,
|
||||||
|
collector: TANK_ICONS_COLLECTOR,
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export * from './tankAverages';
|
||||||
+5
-5
@@ -1,5 +1,5 @@
|
|||||||
import { BlitzStats, tankDefinitions } from '@blitzkit/core';
|
import { BlitzStats, tankDefinitions } from '@blitzkit/core';
|
||||||
import { context } from '../blitzkit/context';
|
import { context } from '../../../website/src/core/blitzkit/context';
|
||||||
|
|
||||||
interface SpecialStats {
|
interface SpecialStats {
|
||||||
winrate: number;
|
winrate: number;
|
||||||
@@ -81,9 +81,9 @@ export interface IndividualTankAverage {
|
|||||||
|
|
||||||
tankDefinitions;
|
tankDefinitions;
|
||||||
|
|
||||||
export type TankAverages = Record<number, IndividualTankAverage>;
|
export type BlitzStarsTankAverages = Record<number, IndividualTankAverage>;
|
||||||
|
|
||||||
export const tankAverages = fetch(
|
export const blitzStarsTankAverages = fetch(
|
||||||
context === 'website'
|
context === 'website'
|
||||||
? '/api/tank-averages'
|
? '/api/tank-averages'
|
||||||
: 'https://www.blitzstars.com/api/tankaverages.json',
|
: 'https://www.blitzstars.com/api/tankaverages.json',
|
||||||
@@ -91,7 +91,7 @@ export const tankAverages = fetch(
|
|||||||
.then((response) => response.json())
|
.then((response) => response.json())
|
||||||
.then((json) => {
|
.then((json) => {
|
||||||
if (context === 'server') {
|
if (context === 'server') {
|
||||||
const partialTankAverages: TankAverages = {};
|
const partialTankAverages: BlitzStarsTankAverages = {};
|
||||||
|
|
||||||
(json as IndividualTankAverage[]).forEach((individualTankAverage) => {
|
(json as IndividualTankAverage[]).forEach((individualTankAverage) => {
|
||||||
partialTankAverages[individualTankAverage.tank_id] =
|
partialTankAverages[individualTankAverage.tank_id] =
|
||||||
@@ -100,6 +100,6 @@ export const tankAverages = fetch(
|
|||||||
|
|
||||||
return partialTankAverages;
|
return partialTankAverages;
|
||||||
} else {
|
} else {
|
||||||
return json as TankAverages;
|
return json as BlitzStarsTankAverages;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
export * from './blitz';
|
export * from './blitz';
|
||||||
export * from './blitzkit';
|
export * from './blitzkit';
|
||||||
|
export * from './blitzstars';
|
||||||
export * from './databases';
|
export * from './databases';
|
||||||
export * from './imgur';
|
export * from './imgur';
|
||||||
export * from './math';
|
export * from './math';
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
type Name =
|
type Name =
|
||||||
| `color-${'background' | `panel-${'solid' | 'translucent'}` | 'surface' | 'overlay'}`
|
| `color-${'background' | `panel-${'solid' | 'translucent'}` | 'surface' | 'overlay'}`
|
||||||
| `radius-${1 | 2 | 3 | 4 | 5 | 6 | 'full'}`
|
| `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) {
|
export function Var(name: Name) {
|
||||||
return `var(--${name})`;
|
return `var(--${name})`;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { RatingPlayer } from '../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { RatingStats } from '../../../website/src/core/blitz/getAccountInfo';
|
import { RatingStats } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { BkrlSuperset1Entry } from '../streams/bkrl';
|
import { BkrlSuperset1Entry } from '../streams/bkrl';
|
||||||
|
|
||||||
@@ -16,3 +15,16 @@ export function deltaBkrlBlitzStats(
|
|||||||
score: b2.score - a.score,
|
score: b2.score - a.score,
|
||||||
} satisfies Omit<BkrlSuperset1Entry, 'id'>;
|
} satisfies Omit<BkrlSuperset1Entry, 'id'>;
|
||||||
}
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { DiffedTankStats } from '../../../bot/src/core/blitzstars/getStatsInPeriod';
|
|
||||||
import { SupplementaryStats } from '../../../website/src/core/blitz/getAccountInfo';
|
import { SupplementaryStats } from '../../../website/src/core/blitz/getAccountInfo';
|
||||||
import { tankAverages } from '../../../website/src/core/blitzstars/tankAverages';
|
|
||||||
import { tankDefinitions, TreeType } from '../blitzkit/tankDefinitions';
|
import { tankDefinitions, TreeType } from '../blitzkit/tankDefinitions';
|
||||||
|
import { blitzStarsTankAverages } from '../blitzstars/tankAverages';
|
||||||
import calculateWN8 from './calculateWN8';
|
import calculateWN8 from './calculateWN8';
|
||||||
|
import { BlitzStats } from './compositeStats';
|
||||||
import sumStats from './sumStats';
|
import sumStats from './sumStats';
|
||||||
|
|
||||||
export interface StatFilters {
|
export interface StatFilters {
|
||||||
@@ -21,7 +21,7 @@ export async function filterStats(
|
|||||||
if (filters.tank) filters = { tank: filters.tank };
|
if (filters.tank) filters = { tank: filters.tank };
|
||||||
|
|
||||||
const awaitedTankDefinitions = await tankDefinitions;
|
const awaitedTankDefinitions = await tankDefinitions;
|
||||||
const awaitedTankAverages = await tankAverages;
|
const awaitedTankAverages = await blitzStarsTankAverages;
|
||||||
const filteredOrder = order.filter((id) => {
|
const filteredOrder = order.filter((id) => {
|
||||||
const entry = awaitedTankDefinitions[id];
|
const entry = awaitedTankDefinitions[id];
|
||||||
|
|
||||||
@@ -72,3 +72,8 @@ export async function filterStats(
|
|||||||
|
|
||||||
return { stats, supplementary, filteredOrder };
|
return { stats, supplementary, filteredOrder };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface DiffedTankStats {
|
||||||
|
diff: Record<number, BlitzStats>;
|
||||||
|
order: number[];
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import { TierWeightsRecord } from '../../../bot/src/components/TierWeights';
|
import { tankDefinitions, Tier } from '../blitzkit/tankDefinitions';
|
||||||
import { tankDefinitions } from '../blitzkit/tankDefinitions';
|
|
||||||
import { BlitzStats } from './compositeStats/constants';
|
import { BlitzStats } from './compositeStats/constants';
|
||||||
|
|
||||||
export async function getTierWeights(
|
export async function getTierWeights(
|
||||||
@@ -20,3 +19,4 @@ export async function getTierWeights(
|
|||||||
|
|
||||||
return tierWeights;
|
return tierWeights;
|
||||||
}
|
}
|
||||||
|
export type TierWeightsRecord = Partial<Record<Tier, number>>;
|
||||||
Vendored
-4
@@ -1,4 +0,0 @@
|
|||||||
declare module '*.proto' {
|
|
||||||
const value: string;
|
|
||||||
export default value;
|
|
||||||
}
|
|
||||||
@@ -8,13 +8,10 @@ import {
|
|||||||
RegionSubdomain,
|
RegionSubdomain,
|
||||||
superCompress,
|
superCompress,
|
||||||
} from '@blitzkit/core';
|
} 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 { chunk } from 'lodash';
|
||||||
import { argv } from 'process';
|
import { argv } from 'process';
|
||||||
import {
|
|
||||||
RatingInfo,
|
|
||||||
RatingNeighbors,
|
|
||||||
RatingPlayer,
|
|
||||||
} from '../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { getAccountInfo } from '../../website/src/core/blitz/getAccountInfo';
|
import { getAccountInfo } from '../../website/src/core/blitz/getAccountInfo';
|
||||||
import regionSubdomainToRegion from '../../website/src/core/blitz/regionSubdomainToRegion';
|
import regionSubdomainToRegion from '../../website/src/core/blitz/regionSubdomainToRegion';
|
||||||
import { patientFetchJSON } from '../../website/src/core/blitzkit/patientFetchJSON';
|
import { patientFetchJSON } from '../../website/src/core/blitzkit/patientFetchJSON';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages';
|
||||||
import { NextResponse } from 'next/server';
|
import { NextResponse } from 'next/server';
|
||||||
import { tankAverages } from '../../../core/blitzstars/tankAverages';
|
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
return NextResponse.json(await tankAverages);
|
return NextResponse.json(await blitzStarsTankAverages);
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
import { TankCharacteristics } from '@blitzkit/core';
|
import { TankCharacteristics, Var } from '@blitzkit/core';
|
||||||
import {
|
import {
|
||||||
CaretLeftIcon,
|
CaretLeftIcon,
|
||||||
CaretRightIcon,
|
CaretRightIcon,
|
||||||
CaretSortIcon,
|
CaretSortIcon,
|
||||||
} from '@radix-ui/react-icons';
|
} from '@radix-ui/react-icons';
|
||||||
import { Flex, IconButton, Table, Text } from '@radix-ui/themes';
|
import { Flex, IconButton, Table, Text } from '@radix-ui/themes';
|
||||||
import { theme } from '../../../../../../bot/src/stitches.config';
|
|
||||||
import { StickyRowHeaderCell } from '../../../../components/StickyRowHeaderCell';
|
import { StickyRowHeaderCell } from '../../../../components/StickyRowHeaderCell';
|
||||||
import * as CompareEphemeral from '../../../../stores/compareEphemeral';
|
import * as CompareEphemeral from '../../../../stores/compareEphemeral';
|
||||||
import * as ComparePersistent from '../../../../stores/comparePersistent';
|
import * as ComparePersistent from '../../../../stores/comparePersistent';
|
||||||
@@ -103,8 +102,8 @@ export function CompareRow({
|
|||||||
const resolvedDisplayValue = display
|
const resolvedDisplayValue = display
|
||||||
? display(stats[index])
|
? display(stats[index])
|
||||||
: decimals === undefined
|
: decimals === undefined
|
||||||
? value
|
? value
|
||||||
: value?.toFixed(decimals);
|
: value?.toFixed(decimals);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table.Cell
|
<Table.Cell
|
||||||
@@ -117,12 +116,12 @@ export function CompareRow({
|
|||||||
value === values[0]
|
value === values[0]
|
||||||
? undefined
|
? undefined
|
||||||
: (
|
: (
|
||||||
deltaType === 'higherIsBetter'
|
deltaType === 'higherIsBetter'
|
||||||
? value > values[0]
|
? value > values[0]
|
||||||
: value < values[0]
|
: value < values[0]
|
||||||
)
|
)
|
||||||
? `color-mix(in srgb, ${theme.colors.componentCallToActionInteractive_green} ${normalizedDeltaPercentage}%, ${theme.colors.componentCallToActionInteractive_green}00)`
|
? `color-mix(in srgb, ${Var('green-7')} ${normalizedDeltaPercentage}%, ${Var('green-3')})`
|
||||||
: `color-mix(in srgb, ${theme.colors.componentCallToActionInteractive_red} ${normalizedDeltaPercentage}%, ${theme.colors.componentCallToActionInteractive_red}00)`,
|
: `color-mix(in srgb, ${Var('red-7')} ${normalizedDeltaPercentage}%, ${Var('red-3')})`,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Flex
|
<Flex
|
||||||
@@ -149,8 +148,8 @@ export function CompareRow({
|
|||||||
deltaNominalDisplay
|
deltaNominalDisplay
|
||||||
? deltaNominalDisplay(delta)
|
? deltaNominalDisplay(delta)
|
||||||
: decimals === undefined
|
: decimals === undefined
|
||||||
? delta
|
? delta
|
||||||
: delta.toFixed(decimals)
|
: delta.toFixed(decimals)
|
||||||
}`}
|
}`}
|
||||||
)
|
)
|
||||||
</Text>
|
</Text>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
TankCharacteristics,
|
TankCharacteristics,
|
||||||
|
Var,
|
||||||
asset,
|
asset,
|
||||||
availableProvisions,
|
availableProvisions,
|
||||||
checkConsumableProvisionInclusivity,
|
checkConsumableProvisionInclusivity,
|
||||||
@@ -13,7 +14,6 @@ import { ComponentPlaceholderIcon } from '@radix-ui/react-icons';
|
|||||||
import { Button, Flex, Popover, Slider, Table, Text } from '@radix-ui/themes';
|
import { Button, Flex, Popover, Slider, Table, Text } from '@radix-ui/themes';
|
||||||
import { debounce, times } from 'lodash';
|
import { debounce, times } from 'lodash';
|
||||||
import { use } from 'react';
|
import { use } from 'react';
|
||||||
import { theme } from '../../../../../../bot/src/stitches.config';
|
|
||||||
import { BlitzkitButtonGrayIcon } from '../../../../components/BlitzkitButtonGrayIcon';
|
import { BlitzkitButtonGrayIcon } from '../../../../components/BlitzkitButtonGrayIcon';
|
||||||
import { ConsumablesManager } from '../../../../components/ConsumablesManager';
|
import { ConsumablesManager } from '../../../../components/ConsumablesManager';
|
||||||
import { CrewSkillManager } from '../../../../components/CrewSkillManager';
|
import { CrewSkillManager } from '../../../../components/CrewSkillManager';
|
||||||
@@ -83,12 +83,7 @@ export function CompareTable({ stats }: CompareTableProps) {
|
|||||||
<Popover.Root>
|
<Popover.Root>
|
||||||
<Popover.Trigger>
|
<Popover.Trigger>
|
||||||
<Button variant="ghost" radius="large">
|
<Button variant="ghost" radius="large">
|
||||||
<Flex
|
<Flex direction="column" style={{ gap: 2 }}>
|
||||||
direction="column"
|
|
||||||
style={{
|
|
||||||
gap: 2,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{Object.entries(awaitedSkillDefinitions.classes).map(
|
{Object.entries(awaitedSkillDefinitions.classes).map(
|
||||||
([tankClass, skills]) => (
|
([tankClass, skills]) => (
|
||||||
<Flex key={tankClass} style={{ gap: 2 }}>
|
<Flex key={tankClass} style={{ gap: 2 }}>
|
||||||
@@ -101,10 +96,10 @@ export function CompareTable({ stats }: CompareTableProps) {
|
|||||||
borderRadius: 2,
|
borderRadius: 2,
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
crewSkills[skill] === 0
|
crewSkills[skill] === 0
|
||||||
? theme.colors.textLowContrast
|
? Var('gray-11')
|
||||||
: permanentSkills.includes(skill)
|
: permanentSkills.includes(skill)
|
||||||
? theme.colors.textLowContrast_crimson
|
? Var('crimson-11')
|
||||||
: theme.colors.textLowContrast_amber,
|
: Var('amber-11'),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
@@ -381,9 +376,8 @@ export function CompareTable({ stats }: CompareTableProps) {
|
|||||||
height: 8,
|
height: 8,
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
equipment === -1
|
equipment === -1
|
||||||
? theme.colors
|
? Var('crimson-11')
|
||||||
.textLowContrast_crimson
|
: Var('gray-11'),
|
||||||
: theme.colors.textLowContrast,
|
|
||||||
borderRadius: 2,
|
borderRadius: 2,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
@@ -393,9 +387,8 @@ export function CompareTable({ stats }: CompareTableProps) {
|
|||||||
height: 8,
|
height: 8,
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
equipment === 1
|
equipment === 1
|
||||||
? theme.colors
|
? Var('crimson-11')
|
||||||
.textLowContrast_crimson
|
: Var('gray-11'),
|
||||||
: theme.colors.textLowContrast,
|
|
||||||
borderRadius: 2,
|
borderRadius: 2,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { Var } from '@blitzkit/core';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
import { theme } from '../../../../../../../bot/src/stitches.config';
|
|
||||||
import { insertionMarkers } from './constants';
|
import { insertionMarkers } from './constants';
|
||||||
|
|
||||||
export function InsertionMarker({ index }: { index: number }) {
|
export function InsertionMarker({ index }: { index: number }) {
|
||||||
@@ -28,7 +28,7 @@ export function InsertionMarker({ index }: { index: number }) {
|
|||||||
height: '75%',
|
height: '75%',
|
||||||
width: 2,
|
width: 2,
|
||||||
borderRadius: 1,
|
borderRadius: 1,
|
||||||
backgroundColor: theme.colors.textLowContrast_crimson,
|
backgroundColor: Var('crimson-11'),
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
right: 0,
|
right: 0,
|
||||||
top: '50%',
|
top: '50%',
|
||||||
|
|||||||
@@ -6,7 +6,10 @@ import {
|
|||||||
Region,
|
Region,
|
||||||
REGIONS,
|
REGIONS,
|
||||||
UNLOCALIZED_REGION_NAMES,
|
UNLOCALIZED_REGION_NAMES,
|
||||||
|
Var,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
|
import { RatingInfo } from '@blitzkit/core/src/blitz/leagues';
|
||||||
|
import { RatingPlayer } from '@blitzkit/core/src/statistics/deltaBkrlBlitzStats';
|
||||||
import { blackA, orangeDark } from '@radix-ui/colors';
|
import { blackA, orangeDark } from '@radix-ui/colors';
|
||||||
import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
|
import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
|
||||||
import {
|
import {
|
||||||
@@ -22,11 +25,6 @@ import { produce } from 'immer';
|
|||||||
import { debounce, range } from 'lodash';
|
import { debounce, range } from 'lodash';
|
||||||
import { ChangeEvent, useEffect, useRef, useState } from 'react';
|
import { ChangeEvent, useEffect, useRef, useState } from 'react';
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import {
|
|
||||||
RatingInfo,
|
|
||||||
RatingPlayer,
|
|
||||||
} from '../../../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { theme } from '../../../../../bot/src/stitches.config';
|
|
||||||
import PageWrapper from '../../../components/PageWrapper';
|
import PageWrapper from '../../../components/PageWrapper';
|
||||||
import { Skeleton } from '../../../components/Skeleton';
|
import { Skeleton } from '../../../components/Skeleton';
|
||||||
import fetchBlitz from '../../../core/blitz/fetchBlitz';
|
import fetchBlitz from '../../../core/blitz/fetchBlitz';
|
||||||
@@ -1008,9 +1006,7 @@ export default function Page() {
|
|||||||
return (
|
return (
|
||||||
<Table.Row
|
<Table.Row
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: highlight
|
backgroundColor: highlight ? Var('orange-9') : 'unset',
|
||||||
? theme.colors.componentInteractiveActive_orange
|
|
||||||
: 'unset',
|
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
}}
|
}}
|
||||||
key={`${region}${season}${index}`}
|
key={`${region}${season}${index}`}
|
||||||
@@ -1023,14 +1019,14 @@ export default function Page() {
|
|||||||
<Flex gap="2">
|
<Flex gap="2">
|
||||||
{names[region][id] === null
|
{names[region][id] === null
|
||||||
? `Deleted player ${id}`
|
? `Deleted player ${id}`
|
||||||
: names[region][id]?.nickname ?? (
|
: (names[region][id]?.nickname ?? (
|
||||||
<Skeleton
|
<Skeleton
|
||||||
style={{
|
style={{
|
||||||
height: 16,
|
height: 16,
|
||||||
width: Math.random() * 128 + 128,
|
width: Math.random() * 128 + 128,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
))}
|
||||||
{clan ? (
|
{clan ? (
|
||||||
<Text color="gray">{`[${clan}]`}</Text>
|
<Text color="gray">{`[${clan}]`}</Text>
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
idToRegion,
|
idToRegion,
|
||||||
tankDefinitions,
|
tankDefinitions,
|
||||||
} from '@blitzkit/core';
|
} from '@blitzkit/core';
|
||||||
|
import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages';
|
||||||
import {
|
import {
|
||||||
ArrowDownIcon,
|
ArrowDownIcon,
|
||||||
MagnifyingGlassIcon,
|
MagnifyingGlassIcon,
|
||||||
@@ -45,7 +46,6 @@ import getTankStats from '../../../core/blitz/getTankStats';
|
|||||||
import searchPlayersAcrossRegions, {
|
import searchPlayersAcrossRegions, {
|
||||||
AccountListWithServer,
|
AccountListWithServer,
|
||||||
} from '../../../core/blitz/searchPlayersAcrossRegions';
|
} from '../../../core/blitz/searchPlayersAcrossRegions';
|
||||||
import { tankAverages } from '../../../core/blitzstars/tankAverages';
|
|
||||||
import * as Session from '../../../stores/session';
|
import * as Session from '../../../stores/session';
|
||||||
|
|
||||||
export default function Page({
|
export default function Page({
|
||||||
@@ -55,7 +55,7 @@ export default function Page({
|
|||||||
}) {
|
}) {
|
||||||
const [loaded, setLoaded] = useState(false);
|
const [loaded, setLoaded] = useState(false);
|
||||||
const awaitedTankDefinitions = use(tankDefinitions);
|
const awaitedTankDefinitions = use(tankDefinitions);
|
||||||
const awaitedTankAvearges = use(tankAverages);
|
const awaitedTankAvearges = use(blitzStarsTankAverages);
|
||||||
const [showSearch, setShowSearch] = useState(false);
|
const [showSearch, setShowSearch] = useState(false);
|
||||||
const [searching, setSearching] = useState(false);
|
const [searching, setSearching] = useState(false);
|
||||||
const [searchResults, setSearchResults] = useState<AccountListWithServer>([]);
|
const [searchResults, setSearchResults] = useState<AccountListWithServer>([]);
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { provisionDefinitions } from '@blitzkit/core';
|
||||||
|
import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants';
|
||||||
import { CaretRightIcon, UpdateIcon } from '@radix-ui/react-icons';
|
import { CaretRightIcon, UpdateIcon } from '@radix-ui/react-icons';
|
||||||
import { Button, Dialog, Flex, Heading } from '@radix-ui/themes';
|
import { Button, Dialog, Flex, Heading } from '@radix-ui/themes';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
@@ -6,8 +8,6 @@ import { pushTankopediaPath } from '../../../../../core/blitzkit/pushTankopediaP
|
|||||||
import { tankToDuelMember } from '../../../../../core/blitzkit/tankToDuelMember';
|
import { tankToDuelMember } from '../../../../../core/blitzkit/tankToDuelMember';
|
||||||
import * as Duel from '../../../../../stores/duel';
|
import * as Duel from '../../../../../stores/duel';
|
||||||
import { TankSearch } from '../../components/TankSearch';
|
import { TankSearch } from '../../components/TankSearch';
|
||||||
import { provisionDefinitions } from '@blitzkit/core';
|
|
||||||
import { TREE_TYPE_ICONS } from '../../../../../../../bot/src/components/Tanks/components/Item/constants';
|
|
||||||
|
|
||||||
export function Title() {
|
export function Title() {
|
||||||
const awaitedProvisionDefinitions = use(provisionDefinitions);
|
const awaitedProvisionDefinitions = use(provisionDefinitions);
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { RatingInfo, Region } from '@blitzkit/core';
|
||||||
import { RatingInfo } from '../../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { context } from '../blitzkit/context';
|
import { context } from '../blitzkit/context';
|
||||||
import { patientFetch } from '../blitzkit/patientFetch';
|
import { patientFetch } from '../blitzkit/patientFetch';
|
||||||
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { Region } from '@blitzkit/core';
|
||||||
import {
|
import { LeagueTop } from '@blitzkit/core/src/blitz/rating';
|
||||||
LeagueTop,
|
import { RatingPlayer } from '@blitzkit/core/src/statistics/deltaBkrlBlitzStats';
|
||||||
RatingPlayer,
|
|
||||||
} from '../../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { context } from '../blitzkit/context';
|
import { context } from '../blitzkit/context';
|
||||||
import { patientFetch } from '../blitzkit/patientFetch';
|
import { patientFetch } from '../blitzkit/patientFetch';
|
||||||
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Region } from '@blitzkit/core';
|
import { RatingNeighbors, Region } from '@blitzkit/core';
|
||||||
import { RatingNeighbors } from '../../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
import { patientFetch } from '../blitzkit/patientFetch';
|
import { patientFetch } from '../blitzkit/patientFetch';
|
||||||
import { withCORSProxy } from '../blitzkit/withCORSProxy';
|
import { withCORSProxy } from '../blitzkit/withCORSProxy';
|
||||||
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
import regionToRegionSubdomain from './regionToRegionSubdomain';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Region, asset } from '@blitzkit/core';
|
import { Region, asset } from '@blitzkit/core';
|
||||||
|
import { RatingInfo } from '@blitzkit/core/src/blitz/leagues';
|
||||||
import { superDecompress } from '@blitzkit/core/src/blitzkit/superDecompress';
|
import { superDecompress } from '@blitzkit/core/src/blitzkit/superDecompress';
|
||||||
import { RatingInfo } from '../../../../bot/src/commands/ratingLeaderboard';
|
|
||||||
|
|
||||||
const cache: Record<
|
const cache: Record<
|
||||||
Region,
|
Region,
|
||||||
|
|||||||
Vendored
-4
@@ -1,4 +0,0 @@
|
|||||||
declare module '*.glsl' {
|
|
||||||
const value: string;
|
|
||||||
export default value;
|
|
||||||
}
|
|
||||||
+1
-1
@@ -20,6 +20,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"include": ["packages/**/*"],
|
"include": ["packages/**/*", "types.d.ts"],
|
||||||
"exclude": ["node_modules/**/*", "dist"]
|
"exclude": ["node_modules/**/*", "dist"]
|
||||||
}
|
}
|
||||||
Vendored
+14
@@ -0,0 +1,14 @@
|
|||||||
|
declare module '*.glsl' {
|
||||||
|
const value: string;
|
||||||
|
export default value;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module '*.proto' {
|
||||||
|
const value: string;
|
||||||
|
export default value;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module '*.ttf' {
|
||||||
|
const path: string;
|
||||||
|
export default path;
|
||||||
|
}
|
||||||
Reference in new issue
Block a user