fix: types

This commit is contained in:
TrèsAbhi committed 2024-09-07 21:45:00 -05:00
1 parent 9ae8b0ac49
commit 3c80a43435
255 files changed
+797 -838

No files matched your search

+1
View File
@@ -65,6 +65,7 @@
"Everytime", "Everytime",
"FASTNAME", "FASTNAME",
"FOURCC", "FOURCC",
"frameloop",
"fsformat", "fsformat",
"Fullscreen", "Fullscreen",
"fullstats", "fullstats",
BIN
View File
Binary file not shown.
+4 -21
View File
@@ -30,51 +30,34 @@
"discoverids": "scripts/discoverIds.ts" "discoverids": "scripts/discoverIds.ts"
}, },
"license": "MIT", "license": "MIT",
"dependencies": {
"lodash": "^4.17.21"
},
"devDependencies": { "devDependencies": {
"typescript": "^5.5.4" "typescript": "^5.5.4"
}, },
"_dependencies": { "_dependencies": {
"@radix-ui/colors": "^3.0.0", "@radix-ui/colors": "^3.0.0",
"@resvg/resvg-js": "^2.6.2",
"@types/three": "^0.160.0", "@types/three": "^0.160.0",
"@vanilla-extract/css": "^1.15.5", "@vanilla-extract/css": "^1.15.5",
"bepaint": "^0.1.0-beta.3",
"csv-parse": "^5.5.6", "csv-parse": "^5.5.6",
"decompress": "^4.2.1",
"discord.js": "^14.15.3",
"dotenv": "^16.4.5",
"esbuild": "^0.19.12", "esbuild": "^0.19.12",
"express": "^4.19.2", "express": "^4.19.2",
"false": "^0.0.4", "false": "^0.0.4",
"fuzzysort": "^2.0.4", "fuzzysort": "^2.0.4",
"googleapis": "^134.0.0",
"js-yaml": "^4.1.0",
"markdown-escape": "^2.0.0",
"markdown-to-jsx": "^7.5.0",
"parse-dds": "^1.2.1", "parse-dds": "^1.2.1",
"postprocessing": "^6.36.0", "postprocessing": "^6.36.0",
"progress": "^2.0.3",
"satori": "^0.10.14",
"sharp": "^0.33.5",
"three-stdlib": "^2.32.2", "three-stdlib": "^2.32.2",
"urlon": "^3.1.0", "urlon": "^3.1.0"
"yaml": "^2.5.0"
}, },
"_devDependencies": { "_devDependencies": {
"@total-typescript/ts-reset": "^0.5.1", "@total-typescript/ts-reset": "^0.5.1",
"@types/bun": "latest", "@types/bun": "latest",
"@types/decompress": "^4.2.7",
"@types/escape-html": "^1.0.4", "@types/escape-html": "^1.0.4",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
"@types/js-yaml": "^4.0.9",
"@types/markdown-escape": "^1.1.3",
"@types/node": "^20.16.3", "@types/node": "^20.16.3",
"@types/parse-dds": "^1.0.3", "@types/parse-dds": "^1.0.3",
"@types/pngjs": "^6.0.5", "@types/pngjs": "^6.0.5",
"@types/progress": "^2.0.7",
"compare-versions": "^6.1.1",
"crc": "^4.3.2",
"fast-xml-parser": "^4.4.1",
"knip": "^3.13.2", "knip": "^3.13.2",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"prisma": "^5.19.1" "prisma": "^5.19.1"
+17
View File
@@ -0,0 +1,17 @@
{
"name": "@blitzkit/bot",
"private": true,
"type": "module",
"dependencies": {
"@blitzkit/core": "workspace:*",
"satori": "^0.10.14",
"@resvg/resvg-js": "^2.6.2",
"discord.js": "^14.15.3",
"bepaint": "^0.1.0-beta.3",
"dotenv": "^16.4.5",
"markdown-escape": "^2.0.0"
},
"devDependencies": {
"@types/markdown-escape": "^1.1.3"
}
}
@@ -1,4 +1,4 @@
import { getBlitzStarsLinkButton } from '../../core/blitzstars/getBlitzStarsLinkButton'; import { getBlitzStarsLinkButton } from '../../../../website/src/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';
+16 -15
View File
@@ -1,27 +1,28 @@
import getStatsInPeriod from '@blitzkit/core/src/blitzstars/getStatsInPeriod'; import {
BlitzStats,
filterStats,
StatFilters,
TankDefinition,
tankDefinitions,
} from '@blitzkit/core';
import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import { chunk } from 'lodash'; 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 * 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 { getAccountInfo } from '../../core/blitz/getAccountInfo'; import getStatsInPeriod from '../../core/blitzstars/getStatsInPeriod';
import { getClanAccountInfo } from '../../core/blitz/getClanAccountInfo';
import getTankStats from '../../core/blitz/getTankStats';
import { filtersToDescription } from '../../core/blitzkit/filtersToDescription';
import {
TankDefinition,
tankDefinitions,
} from '../../core/blitzkit/tankDefinitions';
import { tankAverages } from '../../core/blitzstars/tankAverages';
import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand'; import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand';
import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand'; import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand';
import { translator } from '../../core/localization/translator'; import { translator } from '../../core/localization/translator';
import calculateWN8 from '../../core/statistics/calculateWN8';
import { BlitzStats } from '../../core/statistics/compositeStats/constants';
import { StatFilters, filterStats } from '../../core/statistics/filterStats';
import getWN8Percentile from '../../core/statistics/getWN8Percentile';
import { UserError } from '../../hooks/userError';
const ROWS_PER_PAGE = 8; const ROWS_PER_PAGE = 8;
const MAX_PAGES = 9; const MAX_PAGES = 9;
+1 -1
View File
@@ -1,4 +1,4 @@
import packageJSON from '../../package.json' assert { type: 'json' }; import packageJSON from '../../../../package.json' assert { type: 'json' };
import { client } from '../core/discord/client'; import { client } from '../core/discord/client';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
import { translator } from '../core/localization/translator'; import { translator } from '../core/localization/translator';
+7 -7
View File
@@ -1,16 +1,16 @@
import { Locale, SlashCommandSubcommandGroupBuilder } from 'discord.js'; 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 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 { getAccountInfo } from '../core/blitz/getAccountInfo'; import getTankHistories from '../core/blitzstars/getTankHistories';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import resolveTankId from '../core/blitz/resolveTankId';
import { emblemURL } from '../core/blitzkit/emblemURL';
import getTankHistories from '../core/blitzkit/getTankHistories';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
import getPlayerHistories from '../core/blitzstars/getPlayerHistories';
import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands'; import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands';
import addTankChoices from '../core/discord/addTankChoices'; import addTankChoices from '../core/discord/addTankChoices';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
+7 -8
View File
@@ -1,15 +1,16 @@
import getStatsInPeriod from '@blitzkit/core/src/blitzstars/getStatsInPeriod'; import { StatFilters, filterStats, getTierWeights } from '@blitzkit/core';
import { Locale } from 'discord.js'; 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 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 { getAccountInfo } from '../core/blitz/getAccountInfo'; import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { emblemURL } from '../core/blitzkit/emblemURL';
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
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';
@@ -28,8 +29,6 @@ import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand, { import resolvePlayerFromCommand, {
ResolvedPlayer, ResolvedPlayer,
} from '../core/discord/resolvePlayerFromCommand'; } from '../core/discord/resolvePlayerFromCommand';
import { StatFilters, filterStats } from '../core/statistics/filterStats';
import { getTierWeights } from '../core/statistics/getTierWeights';
import { CommandRegistry } from '../events/interactionCreate'; import { CommandRegistry } from '../events/interactionCreate';
async function render( async function render(
+5 -3
View File
@@ -1,10 +1,10 @@
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanInfo } from '../../../website/src/core/blitz/getClanInfo';
import CommandWrapper from '../components/CommandWrapper'; import CommandWrapper from '../components/CommandWrapper';
import GenericStats from '../components/GenericStats'; import GenericStats from '../components/GenericStats';
import NoData from '../components/NoData'; import NoData from '../components/NoData';
import TitleBar from '../components/TitleBar'; import TitleBar from '../components/TitleBar';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanInfo } from '../core/blitz/getClanInfo';
import addClanChoices from '../core/discord/addClanChoices'; import addClanChoices from '../core/discord/addClanChoices';
import autocompleteClan from '../core/discord/autocompleteClan'; import autocompleteClan from '../core/discord/autocompleteClan';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
@@ -72,7 +72,9 @@ export const inactiveCommand = new Promise<CommandRegistry>((resolve) => {
<TitleBar <TitleBar
title={clanInfo.name} title={clanInfo.name}
image={`https://wotblitz-gc.gcdn.co/icons/clanEmblems1x/clan-icon-v2-${clanInfo.emblem_set_id}.png`} image={`https://wotblitz-gc.gcdn.co/icons/clanEmblems1x/clan-icon-v2-${clanInfo.emblem_set_id}.png`}
description={`${translate('bot.commands.inactive.body.subtitle', [`${threshold}`])} • ${new Date().toLocaleDateString(interaction.locale)}`} description={`${translate('bot.commands.inactive.body.subtitle', [
`${threshold}`,
])} • ${new Date().toLocaleDateString(interaction.locale)}`}
/> />
{!hasInactiveMembers && ( {!hasInactiveMembers && (
+3 -3
View File
@@ -1,9 +1,9 @@
import { teal } from '@radix-ui/colors'; import { teal } from '@radix-ui/colors';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import { linkBlitzAndDiscord } from '../../../website/src/core/blitzkit/linkBlitzAndDiscord';
import { Glow } from '../components/AllStatsOverview/components/HeroStat/components/Glow'; import { Glow } from '../components/AllStatsOverview/components/HeroStat/components/Glow';
import CommandWrapper from '../components/CommandWrapper'; import CommandWrapper from '../components/CommandWrapper';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { linkBlitzAndDiscord } from '../core/blitzkit/linkBlitzAndDiscord';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
+8 -8
View File
@@ -1,16 +1,16 @@
import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions';
import { chunk } from 'lodash';
import markdownEscape from 'markdown-escape';
import { TANK_CLASSES } from '../components/Tanks/components/Item/constants';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import getTankStats from '../core/blitz/getTankStats';
import { import {
TANK_CLASSES,
TIER_ROMAN_NUMERALS,
TankDefinition, TankDefinition,
Tier, Tier,
flags, flags,
tankDefinitions, tankDefinitions,
} from '../core/blitzkit/tankDefinitions'; } from '@blitzkit/core';
import { TIER_ROMAN_NUMERALS } from '../core/blitzkit/tankDefinitions/constants'; import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions';
import { chunk } from 'lodash';
import markdownEscape from 'markdown-escape';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import getTankStats from '../../../website/src/core/blitz/getTankStats';
import addTierChoices from '../core/discord/addTierChoices'; import addTierChoices from '../core/discord/addTierChoices';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername'; import autocompleteUsername from '../core/discord/autocompleteUsername';
+1 -1
View File
@@ -1,5 +1,5 @@
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { getAccountInfo } from '../core/blitz/getAccountInfo'; import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
+16 -15
View File
@@ -1,24 +1,23 @@
import { BkrlFormat, deltaBkrlBlitzStats } from '@blitzkit/core';
import { SlashCommandSubcommandBuilder } from 'discord.js'; import { SlashCommandSubcommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import { getLeagueFromScore } from '../../../website/src/core/blitz/getLeagueFromScore';
import getRatingInfo from '../../../website/src/core/blitz/getRatingInfo';
import { getRatingNeighbors } from '../../../website/src/core/blitz/getRatingNeighbors';
import { normalizeLeagueIcon } from '../../../website/src/core/blitz/normalizeLeagueIcon';
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import getArchivedRatingMidnightLeaderboard from '../../../website/src/core/blitzkit/getArchivedRatingMidnightLeaderboard';
import { iconPng } from '../../../website/src/core/blitzkit/iconPng';
import { Glow } from '../components/AllStatsOverview/components/HeroStat/components/Glow'; import { Glow } from '../components/AllStatsOverview/components/HeroStat/components/Glow';
import CommandWrapper from '../components/CommandWrapper'; import CommandWrapper from '../components/CommandWrapper';
import { DeltaCaret } from '../components/DeltaCaret'; import { DeltaCaret } from '../components/DeltaCaret';
import TitleBar from '../components/TitleBar'; import TitleBar from '../components/TitleBar';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { getLeagueFromScore } from '../core/blitz/getLeagueFromScore';
import getRatingInfo from '../core/blitz/getRatingInfo';
import { getRatingNeighbors } from '../core/blitz/getRatingNeighbors';
import { normalizeLeagueIcon } from '../core/blitz/normalizeLeagueIcon';
import { emblemURL } from '../core/blitzkit/emblemURL';
import getArchivedRatingMidnightLeaderboard from '../core/blitzkit/getArchivedRatingMidnightLeaderboard';
import { iconPng } from '../core/blitzkit/iconPng';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { translator } from '../core/localization/translator'; import { translator } from '../core/localization/translator';
import { deltaBkrlBlitzStats } from '../core/statistics/deltaBkrlBlitzStats';
import { BkrlFormat } from '../core/streams/bkrl';
import { CommandRegistry } from '../events/interactionCreate'; import { CommandRegistry } from '../events/interactionCreate';
import { theme } from '../stitches.config'; import { theme } from '../stitches.config';
@@ -122,9 +121,9 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
<TitleBar <TitleBar
title={accountInfo.nickname} title={accountInfo.nickname}
image={clanImage} image={clanImage}
description={`${translate(`bot.commands.rating.body.subtitle.${subcommand}`)} • ${new Date().toLocaleDateString( description={`${translate(
interaction.locale, `bot.commands.rating.body.subtitle.${subcommand}`,
)}`} )} • ${new Date().toLocaleDateString(interaction.locale)}`}
/> />
<div <div
@@ -140,7 +139,9 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
padding: 16, padding: 16,
backgroundColor: theme.colors[`appBackground2${leagueTheme}`], backgroundColor: theme.colors[`appBackground2${leagueTheme}`],
borderRadius: 4, borderRadius: 4,
border: `1px solid ${theme.colors[`componentInteractive${leagueTheme}`]}`, border: `1px solid ${
theme.colors[`componentInteractive${leagueTheme}`]
}`,
display: 'flex', display: 'flex',
alignItems: 'center', alignItems: 'center',
justifyContent: 'space-between', justifyContent: 'space-between',
+23 -21
View File
@@ -1,3 +1,9 @@
import {
BkrlDiscriminatedEntries,
FIRST_MINIMAL_ARCHIVED_RATING_SEASON,
LEAGUES,
Region,
} from '@blitzkit/core';
import { import {
APIApplicationCommandOptionChoice, APIApplicationCommandOptionChoice,
Locale, Locale,
@@ -5,22 +11,20 @@ import {
} from 'discord.js'; } from 'discord.js';
import { range } from 'lodash'; import { range } from 'lodash';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import getRatingInfo from '../../../website/src/core/blitz/getRatingInfo';
import { getRatingLeague } from '../../../website/src/core/blitz/getRatingLeague';
import { getRatingNeighbors } from '../../../website/src/core/blitz/getRatingNeighbors';
import { isOnGoingRatingSeason } from '../../../website/src/core/blitz/isOnGoingRatingSeason';
import { getArchivedLatestSeasonNumber } from '../../../website/src/core/blitzkit/getArchivedLatestSeasonNumber';
import getArchivedRatingInfo from '../../../website/src/core/blitzkit/getArchivedRatingInfo';
import { getArchivedRatingLeaderboard } from '../../../website/src/core/blitzkit/getArchivedRatingLeaderboard';
import getArchivedRatingMidnightLeaderboard from '../../../website/src/core/blitzkit/getArchivedRatingMidnightLeaderboard';
import { UserError } from '../../../website/src/hooks/userError';
import CommandWrapper from '../components/CommandWrapper'; import CommandWrapper from '../components/CommandWrapper';
import * as Leaderboard from '../components/Leaderboard'; import * as Leaderboard from '../components/Leaderboard';
import TitleBar from '../components/TitleBar'; import TitleBar from '../components/TitleBar';
import { LEAGUES } from '../constants/leagues';
import { FIRST_MINIMAL_ARCHIVED_RATING_SEASON } from '../constants/rating';
import { Region } from '../constants/regions';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import getRatingInfo from '../core/blitz/getRatingInfo';
import { getRatingLeague } from '../core/blitz/getRatingLeague';
import { getRatingNeighbors } from '../core/blitz/getRatingNeighbors';
import { isOnGoingRatingSeason } from '../core/blitz/isOnGoingRatingSeason';
import { getArchivedLatestSeasonNumber } from '../core/blitzkit/getArchivedLatestSeasonNumber';
import getArchivedRatingInfo from '../core/blitzkit/getArchivedRatingInfo';
import { getArchivedRatingLeaderboard } from '../core/blitzkit/getArchivedRatingLeaderboard';
import getArchivedRatingMidnightLeaderboard from '../core/blitzkit/getArchivedRatingMidnightLeaderboard';
import addRegionChoices from '../core/discord/addRegionChoices'; import addRegionChoices from '../core/discord/addRegionChoices';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername'; import autocompleteUsername from '../core/discord/autocompleteUsername';
@@ -28,9 +32,7 @@ import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
import { localizationObject } from '../core/discord/localizationObject'; import { localizationObject } from '../core/discord/localizationObject';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { translator } from '../core/localization/translator'; import { translator } from '../core/localization/translator';
import { BkrlDiscriminatedEntries } from '../core/streams/bkrl';
import { CommandRegistry } from '../events/interactionCreate'; import { CommandRegistry } from '../events/interactionCreate';
import { UserError } from '../hooks/userError';
export interface RatingPlayer { export interface RatingPlayer {
spa_id: number; spa_id: number;
@@ -254,7 +256,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);
@@ -277,8 +279,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;
@@ -311,7 +313,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(
@@ -347,7 +349,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),
); );
}, },
); );
@@ -396,7 +398,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(
+12 -10
View File
@@ -1,19 +1,21 @@
import {
idToRegion,
tankDefinitions,
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
import { tankIcon } from '@blitzkit/core/src/blitzkit/tankIcon'; import { tankIcon } from '@blitzkit/core/src/blitzkit/tankIcon';
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 { 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 CommandWrapper from '../components/CommandWrapper';
import TitleBar from '../components/TitleBar'; import TitleBar from '../components/TitleBar';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { idToRegion } from '../core/blitz/idToRegion';
import { emblemURL } from '../core/blitzkit/emblemURL';
import { iconPng } from '../core/blitzkit/iconPng';
import { mapDefinitions } from '../core/blitzkit/mapDefinitions';
import { RenderConfiguration } from '../core/blitzkit/renderConfiguration';
import { tankDefinitions } from '../core/blitzkit/tankDefinitions';
import { TIER_ROMAN_NUMERALS } from '../core/blitzkit/tankDefinitions/constants';
import { tankAverages } from '../core/blitzstars/tankAverages';
import buttonLink from '../core/discord/buttonLink'; import buttonLink from '../core/discord/buttonLink';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
import calculateWN8 from '../core/statistics/calculateWN8';
import { CommandRegistry } from '../events/interactionCreate'; import { CommandRegistry } from '../events/interactionCreate';
import { theme } from '../stitches.config'; import { theme } from '../stitches.config';
+20 -18
View File
@@ -1,22 +1,22 @@
import { Locale, escapeMarkdown } from 'discord.js'; import {
asset,
equipmentPriceMatrix,
TANK_ICONS,
tankDefinitions,
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
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';
import { resolveAncestry } from '../../../website/src/core/blitzkit/resolveAncestry';
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 { equipmentPriceMatrix } from '../constants/equipmentPrice';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import getTankStats from '../core/blitz/getTankStats';
import resolveTankId from '../core/blitz/resolveTankId';
import { asset } from '../core/blitzkit/asset';
import { buildTechTreeLine } from '../core/blitzkit/buildTechTreeLine';
import { emblemURL } from '../core/blitzkit/emblemURL';
import { iconPng } from '../core/blitzkit/iconPng';
import { resolveAncestry } from '../core/blitzkit/resolveAncestry';
import { tankDefinitions } from '../core/blitzkit/tankDefinitions';
import {
TANK_ICONS,
TIER_ROMAN_NUMERALS,
} from '../core/blitzkit/tankDefinitions/constants';
import { tankIconPng } from '../core/blitzkit/tankIconPng';
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';
@@ -220,7 +220,9 @@ export const researchCommand = new Promise<CommandRegistry>((resolve) => {
<TitleBar <TitleBar
title={nickname} title={nickname}
image={clanImage} image={clanImage}
description={`${t`bot.commands.research.body.subtitle`} • ${targetTank.name}`} description={`${t`bot.commands.research.body.subtitle`} • ${
targetTank.name
}`}
/> />
<div <div
+2 -2
View File
@@ -1,7 +1,7 @@
import { Region } from '@blitzkit/core';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { Region } from '../constants/regions'; import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz';
import fetchBlitz from '../core/blitz/fetchBlitz';
import addClanChoices from '../core/discord/addClanChoices'; import addClanChoices from '../core/discord/addClanChoices';
import addRegionChoices from '../core/discord/addRegionChoices'; import addRegionChoices from '../core/discord/addRegionChoices';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
+4 -4
View File
@@ -1,9 +1,9 @@
import { Region } from '@blitzkit/core';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { Region } from '../constants/regions'; import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz';
import fetchBlitz from '../core/blitz/fetchBlitz'; import { AccountList } from '../../../website/src/core/blitz/searchPlayersAcrossRegions';
import { AccountList } from '../core/blitz/searchPlayersAcrossRegions'; import { usernamePattern } from '../../../website/src/core/blitz/searchPlayersAcrossRegions/constants';
import { usernamePattern } from '../core/blitz/searchPlayersAcrossRegions/constants';
import addRegionChoices from '../core/discord/addRegionChoices'; import addRegionChoices from '../core/discord/addRegionChoices';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
+7 -7
View File
@@ -1,14 +1,15 @@
import getStatsInPeriod from '@blitzkit/core/src/blitzstars/getStatsInPeriod'; import { StatFilters, filterStats } from '@blitzkit/core';
import { Locale } from 'discord.js'; 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 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 { getAccountInfo } from '../core/blitz/getAccountInfo'; import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { emblemURL } from '../core/blitzkit/emblemURL';
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
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';
@@ -27,7 +28,6 @@ import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand, { import resolvePlayerFromCommand, {
ResolvedPlayer, ResolvedPlayer,
} from '../core/discord/resolvePlayerFromCommand'; } from '../core/discord/resolvePlayerFromCommand';
import { StatFilters, filterStats } from '../core/statistics/filterStats';
import { CommandRegistry } from '../events/interactionCreate'; import { CommandRegistry } from '../events/interactionCreate';
async function render( async function render(
+1 -1
View File
@@ -1,5 +1,5 @@
import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions'; import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton'; import { getBlitzStarsLinkButton } from '../../../website/src/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,14 +1,14 @@
import { Percentile } from '@blitzkit/core/src/statistics/percentiles'; import { Percentile } from '@blitzkit/core/src/statistics/percentiles';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import { SupplementaryStats } from '../../core/blitz/getAccountInfo'; import { SupplementaryStats } from '../../../../website/src/core/blitz/getAccountInfo';
import { translator } from '../../core/localization/translator';
import getWN8Percentile from '../../core/statistics/getWN8Percentile';
import { PERCENTILE_COLORS } from '../PercentileIndicator/constants'; import { PERCENTILE_COLORS } from '../PercentileIndicator/constants';
import { HeroStat } from './components/HeroStat'; import { HeroStat } from './components/HeroStat';
import { import {
WN8SurroundingStat, WN8SurroundingStat,
WN8SurroundingStatAlign, WN8SurroundingStatAlign,
} from './components/WN8SurroundingStat'; } from './components/WN8SurroundingStat';
import { translator } from '../../core/localization/translator';
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
export interface AllStatsOverviewProps { export interface AllStatsOverviewProps {
stats: { stats: {
@@ -1,11 +1,11 @@
import { TankClass, TreeType } from '@blitzkit/core';
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 {
AccentColor, AccentColor,
GrayColor, GrayColor,
PALETTES, PALETTES,
} from '../../../constants/radixColors'; } from '../../../core/radix/radixColors';
import { TankClass, TreeType } from '../../Tanks';
import { TREE_TYPE_ICONS } from '../../Tanks/components/Item/constants'; import { TREE_TYPE_ICONS } from '../../Tanks/components/Item/constants';
import { RowStat } from './RowStat'; import { RowStat } from './RowStat';
@@ -4,7 +4,7 @@ import {
AccentColor, AccentColor,
GrayColor, GrayColor,
PALETTES, PALETTES,
} from '../../../constants/radixColors'; } from '../../../core/radix/radixColors';
import PercentileIndicator from '../../PercentileIndicator'; import PercentileIndicator from '../../PercentileIndicator';
interface RowStatProps { interface RowStatProps {
@@ -1,9 +1,9 @@
import { BlitzStats } from '@blitzkit/core';
import isNumber from '@blitzkit/core/src/math/isNumber'; import isNumber from '@blitzkit/core/src/math/isNumber';
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import { SupplementaryStats } from '../../core/blitz/getAccountInfo'; import { SupplementaryStats } from '../../../../website/src/core/blitz/getAccountInfo';
import { translator } from '../../core/localization/translator'; import { translator } from '../../core/localization/translator';
import { BlitzStats } from '../../core/statistics/compositeStats/constants';
import getWN8Percentile from '../../core/statistics/getWN8Percentile';
import { Card } from './components/Card'; import { Card } from './components/Card';
import { Root } from './components/Root'; import { Root } from './components/Root';
import { Row } from './components/Row'; import { Row } from './components/Row';
@@ -1,9 +1,10 @@
import { TankClass, TreeType } from '.';
import { import {
TANK_ICONS, TANK_ICONS,
TANK_ICONS_COLLECTOR, TANK_ICONS_COLLECTOR,
TANK_ICONS_PREMIUM, TANK_ICONS_PREMIUM,
} from '../../../../core/blitzkit/tankDefinitions/constants'; TankClass,
TreeType,
} from '@blitzkit/core';
export const TREE_TYPE_NAMES: Record<TreeType, string> = { export const TREE_TYPE_NAMES: Record<TreeType, string> = {
researchable: 'Tech tree', researchable: 'Tech tree',
@@ -1,8 +1,6 @@
import { TankClass, TreeType } from '@blitzkit/core';
import { theme } from '../../../../stitches.config'; import { theme } from '../../../../stitches.config';
import { TANK_CLASSES, TREE_TYPES, TREE_TYPE_ICONS } from './constants'; import { TREE_TYPE_ICONS } from './constants';
export type TankClass = (typeof TANK_CLASSES)[number];
export type TreeType = (typeof TREE_TYPES)[number];
export interface ItemProps { export interface ItemProps {
tankType?: TankClass; tankType?: TankClass;
+1 -1
View File
@@ -1,4 +1,4 @@
import { Tier } from '../core/blitzkit/tankDefinitions'; import { Tier } from '@blitzkit/core';
import { theme } from '../stitches.config'; import { theme } from '../stitches.config';
export type TierWeightsRecord = Partial<Record<Tier, number>>; export type TierWeightsRecord = Partial<Record<Tier, number>>;
@@ -1,6 +1,5 @@
import { usersDatabase } from '../../databases/users'; import { idToRegion, usersDatabase } from '@blitzkit/core';
import { idToRegion } from '../blitz/idToRegion'; import { flagUserActivity } from '../../../../website/src/core/blitzkit/flagUserActivity';
import { flagUserActivity } from './flagUserActivity';
export async function getBlitzFromDiscord(discordId: bigint) { export async function getBlitzFromDiscord(discordId: bigint) {
const unique = await usersDatabase.discordUser.findUnique({ const unique = await usersDatabase.discordUser.findUnique({
@@ -1,6 +1,6 @@
import { Region } from '../../constants/regions'; import { Region } from '@blitzkit/core';
import getTimeDaysAgo from '../../../../website/src/core/blitzkit/getTimeDaysAgo';
import { PeriodSize } from '../discord/addPeriodSubCommands'; import { PeriodSize } from '../discord/addPeriodSubCommands';
import getTimeDaysAgo from './getTimeDaysAgo';
export default function getPeriodStart(region: Region, period: PeriodSize) { export default function getPeriodStart(region: Region, period: PeriodSize) {
if (period === 'career') return 0; if (period === 'career') return 0;
@@ -1,5 +1,5 @@
import { RenderConfiguration } from '../../../../website/src/core/blitzkit/renderConfiguration';
import jsxToSvg from './jsxToSvg'; import jsxToSvg from './jsxToSvg';
import { RenderConfiguration } from './renderConfiguration';
import { svgToPngThreaded } from './svgToPngThreaded'; import { svgToPngThreaded } from './svgToPngThreaded';
export default async function jsxToPngThreaded( export default async function jsxToPngThreaded(
@@ -1,6 +1,6 @@
import { readFile } from 'fs/promises'; import { readFile } from 'fs/promises';
import satori from 'satori'; import satori from 'satori';
import { RenderConfiguration } from '../renderConfiguration'; import { RenderConfiguration } from '../../../../../website/src/core/blitzkit/renderConfiguration';
import robotoBlack from './Roboto-Black.ttf'; import robotoBlack from './Roboto-Black.ttf';
import robotoBold from './Roboto-Bold.ttf'; import robotoBold from './Roboto-Bold.ttf';
import roboto from './Roboto.ttf'; import roboto from './Roboto.ttf';
@@ -1,11 +1,9 @@
import { BlitzStats, emptyAllStats, Region } from '@blitzkit/core';
import { Locale } from 'discord.js'; import { Locale } from 'discord.js';
import { Region } from '../../../../../src/constants/regions';
import getTankHistories, { import getTankHistories, {
TankHistories, TankHistories,
TankHistoryRaw, TankHistoryRaw,
} from '../../../../../src/core/blitzkit/getTankHistories'; } from './getTankHistories';
import { BlitzStats } from '../../../../../src/core/statistics/compositeStats/constants';
import { emptyAllStats } from './constants';
const emptyTankHistoryNode: TankHistoryRaw = { const emptyTankHistoryNode: TankHistoryRaw = {
account_id: 0, account_id: 0,
@@ -106,5 +104,3 @@ export default async function getStatsInPeriod(
return { diff, order } satisfies DiffedTankStats; return { diff, order } satisfies DiffedTankStats;
} }
export * from './constants';
@@ -1,12 +1,13 @@
import { emptyAllStats } from '@blitzkit/core/src/blitzstars/getStatsInPeriod/constants'; import { Region, emptyAllStats } from '@blitzkit/core';
import { Region } from '../../constants/regions'; import { Locale } from 'discord.js';
import getTankStats from '../../../../website/src/core/blitz/getTankStats';
import { UserError } from '../../../../website/src/hooks/userError';
import { import {
GetHistoriesOptions, GetHistoriesOptions,
Histories, Histories,
History, History,
getHistoriesDefaultOptions, getHistoriesDefaultOptions,
} from '../../types/histories'; } from '../../types/histories';
import getTankStats from '../blitz/getTankStats';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
export interface TankHistory extends History { export interface TankHistory extends History {
@@ -1,13 +1,11 @@
import { TANK_CLASSES, TREE_TYPES } from '@blitzkit/core';
import { import {
APIApplicationCommandOptionChoice, APIApplicationCommandOptionChoice,
Locale, Locale,
SlashCommandBuilder, SlashCommandBuilder,
SlashCommandSubcommandBuilder, SlashCommandSubcommandBuilder,
} from 'discord.js'; } from 'discord.js';
import { import {} from '../../components/Tanks/components/Item/constants';
TANK_CLASSES,
TREE_TYPES,
} from '../../components/Tanks/components/Item/constants';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
import addTankChoices from './addTankChoices'; import addTankChoices from './addTankChoices';
import addTierChoices from './addTierChoices'; import addTierChoices from './addTierChoices';
@@ -41,7 +39,7 @@ export function addFilterOptions<
name_localizations: localizationObject( name_localizations: localizationObject(
`common.nations.${nation}`, `common.nations.${nation}`,
), ),
}) satisfies APIApplicationCommandOptionChoice, } satisfies APIApplicationCommandOptionChoice),
), ),
) )
.setRequired(false), .setRequired(false),
@@ -70,7 +68,7 @@ export function addFilterOptions<
name_localizations: localizationObject( name_localizations: localizationObject(
`common.tank_class_short.${tankType}`, `common.tank_class_short.${tankType}`,
), ),
}) satisfies APIApplicationCommandOptionChoice, } satisfies APIApplicationCommandOptionChoice),
), ),
) )
.setRequired(false), .setRequired(false),
@@ -98,7 +96,7 @@ export function addFilterOptions<
name_localizations: localizationObject( name_localizations: localizationObject(
`common.tree_type.${treeType}`, `common.tree_type.${treeType}`,
), ),
}) satisfies APIApplicationCommandOptionChoice, } satisfies APIApplicationCommandOptionChoice),
), ),
) )
.setRequired(false), .setRequired(false),
@@ -1,9 +1,9 @@
import { REGIONS } from '@blitzkit/core';
import { import {
APIApplicationCommandOptionChoice, APIApplicationCommandOptionChoice,
Locale, Locale,
SlashCommandStringOption, SlashCommandStringOption,
} from 'discord.js'; } from 'discord.js';
import { REGIONS } from '../../constants/regions';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
import { localizationObject } from './localizationObject'; import { localizationObject } from './localizationObject';
@@ -26,7 +26,7 @@ export default function addRegionChoices(option: SlashCommandStringOption) {
name_localizations: localizationObject( name_localizations: localizationObject(
`common.regions.normal.${region}`, `common.regions.normal.${region}`,
), ),
}) satisfies APIApplicationCommandOptionChoice, } satisfies APIApplicationCommandOptionChoice),
), ),
) )
.setRequired(true); .setRequired(true);
@@ -3,7 +3,7 @@ import {
AutocompleteInteraction, AutocompleteInteraction,
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import searchClansAcrossRegions from '../../blitz/searchClansAcrossRegions'; 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';
@@ -4,11 +4,11 @@ import {
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import { go } from 'fuzzysort'; import { go } from 'fuzzysort';
import { tankNames } from '../blitzkit/tankDefinitions/tankNames';
import { import {
DISCORD_CHOICES_MAX_NAME_SIZE, DISCORD_CHOICES_MAX_NAME_SIZE,
OVERFLOW_SUFFIX, OVERFLOW_SUFFIX,
} from './autocompleteClan/constants'; } from './autocompleteClan/constants';
import { tankNames } from '@blitzkit/core';
export const tankNamesTechTreeOnly = tankNames.then((names) => export const tankNamesTechTreeOnly = tankNames.then((names) =>
names.filter((tank) => tank.treeType === 'researchable'), names.filter((tank) => tank.treeType === 'researchable'),
@@ -3,7 +3,7 @@ import {
AutocompleteInteraction, AutocompleteInteraction,
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import searchPlayersAcrossRegions from '../blitz/searchPlayersAcrossRegions'; import searchPlayersAcrossRegions from '../../../../website/src/core/blitz/searchPlayersAcrossRegions';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
import { import {
DISCORD_CHOICES_MAX_NAME_SIZE, DISCORD_CHOICES_MAX_NAME_SIZE,
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { ACCENT_COLOR } from '../../constants/colors'; import { ACCENT_COLOR } from './colors';
export default function embedInfo(title: string, description: string) { export default function embedInfo(title: string, description: string) {
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { NEGATIVE_COLOR } from '../../constants/colors'; import { NEGATIVE_COLOR } from './colors';
export default function embedNegative(title: string, description: string) { export default function embedNegative(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { POSITIVE_COLOR } from '../../constants/colors'; import { POSITIVE_COLOR } from './colors';
export default function embedPositive(title: string, description: string) { export default function embedPositive(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { WARNING_COLOR } from '../../constants/colors'; import { WARNING_COLOR } from './colors';
export default function embedWarning(title: string, description: string) { export default function embedWarning(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
@@ -1,6 +1,5 @@
import { StatFilters, TreeType } from '@blitzkit/core';
import { ButtonInteraction } from 'discord.js'; import { ButtonInteraction } from 'discord.js';
import { TreeType } from '../../components/Tanks';
import { StatFilters } from '../statistics/filterStats';
export function getFiltersFromButton(interaction: ButtonInteraction) { export function getFiltersFromButton(interaction: ButtonInteraction) {
const url = new URL(`https://example.com/${interaction.customId}`); const url = new URL(`https://example.com/${interaction.customId}`);
@@ -1,7 +1,6 @@
import { StatFilters, TreeType } from '@blitzkit/core';
import { ChatInputCommandInteraction } from 'discord.js'; import { ChatInputCommandInteraction } from 'discord.js';
import { TreeType } from '../../components/Tanks'; import resolveTankId from '../../../../website/src/core/blitz/resolveTankId';
import resolveTankId from '../blitz/resolveTankId';
import { StatFilters } from '../statistics/filterStats';
export async function getFiltersFromCommand( export async function getFiltersFromCommand(
interaction: ChatInputCommandInteraction, interaction: ChatInputCommandInteraction,
@@ -1,5 +1,5 @@
import { assertSecret } from '@blitzkit/core';
import { ShardingManager } from 'discord.js'; import { ShardingManager } from 'discord.js';
import { assertSecret } from '../../../packages/core/src/blitzkit/assertSecret';
export const manager = new ShardingManager('dist/bot/workers/bot.js', { export const manager = new ShardingManager('dist/bot/workers/bot.js', {
token: assertSecret(process.env.DISCORD_TOKEN), token: assertSecret(process.env.DISCORD_TOKEN),
@@ -7,10 +7,10 @@ import {
InteractionReplyOptions, InteractionReplyOptions,
MessageEditOptions, MessageEditOptions,
} from 'discord.js'; } from 'discord.js';
import { RenderConfiguration } from '../../../../website/src/core/blitzkit/renderConfiguration';
import { InteractionReturnable } from '../../events/interactionCreate'; import { InteractionReturnable } from '../../events/interactionCreate';
import { Writeable } from '../../types/writable'; import { Writeable } from '../../types/writable';
import jsxToPngThreaded from '../blitzkit/jsxToPngThreaded'; import jsxToPngThreaded from '../blitzkit/jsxToPngThreaded';
import { RenderConfiguration } from '../blitzkit/renderConfiguration';
export default async function normalizeInteractionReturnable( export default async function normalizeInteractionReturnable(
returnable: InteractionReturnable, returnable: InteractionReturnable,
@@ -1,8 +1,8 @@
import { Region } from '@blitzkit/core';
import { ChatInputCommandInteraction } from 'discord.js'; import { ChatInputCommandInteraction } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { Region } from '../../constants/regions'; import searchClansAcrossRegions from '../../../../website/src/core/blitz/searchClansAcrossRegions';
import { UserError } from '../../hooks/userError'; import { UserError } from '../../../../website/src/hooks/userError';
import searchClansAcrossRegions from '../blitz/searchClansAcrossRegions';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
import { serverAndIdPattern } from './resolvePlayerFromCommand/constants'; import { serverAndIdPattern } from './resolvePlayerFromCommand/constants';
@@ -1,8 +1,8 @@
import { Region } from '@blitzkit/core';
import { ButtonInteraction } from 'discord.js'; import { ButtonInteraction } from 'discord.js';
import { Region } from '../../constants/regions'; import getTimeDaysAgo from '../../../../website/src/core/blitzkit/getTimeDaysAgo';
import getPeriodNow from '../blitzkit/getPeriodNow'; import getPeriodNow from '../blitzkit/getPeriodNow';
import getPeriodStart from '../blitzkit/getPeriodStart'; import getPeriodStart from '../blitzkit/getPeriodStart';
import getTimeDaysAgo from '../blitzkit/getTimeDaysAgo';
import { PeriodType } from './addPeriodSubCommands'; import { PeriodType } from './addPeriodSubCommands';
import { getPeriodOptionName } from './getPeriodOptionName'; import { getPeriodOptionName } from './getPeriodOptionName';
import { ResolvedPeriod } from './resolvePeriodFromCommand'; import { ResolvedPeriod } from './resolvePeriodFromCommand';
@@ -1,8 +1,8 @@
import { Region } from '@blitzkit/core';
import { CacheType, ChatInputCommandInteraction } from 'discord.js'; import { CacheType, ChatInputCommandInteraction } from 'discord.js';
import { Region } from '../../constants/regions'; import getTimeDaysAgo from '../../../../website/src/core/blitzkit/getTimeDaysAgo';
import getPeriodNow from '../blitzkit/getPeriodNow'; import getPeriodNow from '../blitzkit/getPeriodNow';
import getPeriodStart from '../blitzkit/getPeriodStart'; import getPeriodStart from '../blitzkit/getPeriodStart';
import getTimeDaysAgo from '../blitzkit/getTimeDaysAgo';
import { translator } from '../localization/translator'; import { translator } from '../localization/translator';
import { PeriodType } from './addPeriodSubCommands'; import { PeriodType } from './addPeriodSubCommands';
import { getPeriodOptionName } from './getPeriodOptionName'; import { getPeriodOptionName } from './getPeriodOptionName';
@@ -1,5 +1,5 @@
import { Region } from '@blitzkit/core';
import { ButtonInteraction } from 'discord.js'; import { ButtonInteraction } from 'discord.js';
import { Region } from '../../constants/regions';
import { ResolvedPlayer } from './resolvePlayerFromCommand'; import { ResolvedPlayer } from './resolvePlayerFromCommand';
export default async function resolvePlayerFromButton( export default async function resolvePlayerFromButton(
@@ -1,8 +1,8 @@
import { Region } from '@blitzkit/core';
import { CacheType, ChatInputCommandInteraction } from 'discord.js'; import { CacheType, ChatInputCommandInteraction } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { Region } from '../../../constants/regions'; import searchPlayersAcrossRegions from '../../../../../website/src/core/blitz/searchPlayersAcrossRegions';
import { UserError } from '../../../hooks/userError'; import { UserError } from '../../../../../website/src/hooks/userError';
import searchPlayersAcrossRegions from '../../blitz/searchPlayersAcrossRegions';
import { getBlitzFromDiscord } from '../../blitzkit/getBlitzFromDiscord'; import { getBlitzFromDiscord } from '../../blitzkit/getBlitzFromDiscord';
import { translator } from '../../localization/translator'; import { translator } from '../../localization/translator';
import { serverAndIdPattern } from './constants'; import { serverAndIdPattern } from './constants';
@@ -1 +1,3 @@
import { Locale } from 'discord.js';
export const SUPPORTED_LOCALES: Locale[] = [Locale.EnglishUS, Locale.SpanishES]; export const SUPPORTED_LOCALES: Locale[] = [Locale.EnglishUS, Locale.SpanishES];
@@ -1,3 +1,4 @@
import { Locale } from 'discord.js';
import { SUPPORTED_LOCALES } from './constants'; import { SUPPORTED_LOCALES } from './constants';
export type TranslationFragmentTree = { export type TranslationFragmentTree = {
@@ -8,12 +8,12 @@ import {
InteractionReplyOptions, InteractionReplyOptions,
} from 'discord.js'; } from 'discord.js';
import { InteractionRawReturnable, commands } from '..'; import { InteractionRawReturnable, commands } from '..';
import { UserError } from '../../../../../website/src/hooks/userError';
import buttonLink from '../../../core/discord/buttonLink'; import buttonLink from '../../../core/discord/buttonLink';
import embedWarning from '../../../core/discord/embedWarning'; import embedWarning from '../../../core/discord/embedWarning';
import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable'; import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable';
import { psa } from '../../../core/discord/psa'; import { psa } from '../../../core/discord/psa';
import { translator } from '../../../core/localization/translator'; import { translator } from '../../../core/localization/translator';
import { UserError } from '../../../hooks/userError';
import { Writeable } from '../../../types/writable'; import { Writeable } from '../../../types/writable';
export default async function handleChatInputCommand( export default async function handleChatInputCommand(
@@ -1,3 +1,4 @@
import { assertSecret } from '@blitzkit/core';
import { import {
AttachmentBuilder, AttachmentBuilder,
AutocompleteInteraction, AutocompleteInteraction,
@@ -13,7 +14,7 @@ import {
SlashCommandOptionsOnlyBuilder, SlashCommandOptionsOnlyBuilder,
SlashCommandSubcommandsOnlyBuilder, SlashCommandSubcommandsOnlyBuilder,
} from 'discord.js'; } from 'discord.js';
import { assertSecret } from '../../../packages/core/src/blitzkit/assertSecret'; import { RenderConfiguration } from '../../../../website/src/core/blitzkit/renderConfiguration';
import { aboutCommand } from '../../commands/about'; import { aboutCommand } from '../../commands/about';
import { breakdownCommand } from '../../commands/breakdown'; import { breakdownCommand } from '../../commands/breakdown';
import { debugCommand } from '../../commands/debug'; import { debugCommand } from '../../commands/debug';
@@ -33,7 +34,6 @@ import { searchClansCommand } from '../../commands/searchClans';
import { searchPlayersCommand } from '../../commands/searchPlayers'; import { searchPlayersCommand } from '../../commands/searchPlayers';
import { statsCommand } from '../../commands/stats'; import { statsCommand } from '../../commands/stats';
import { todayCommand } from '../../commands/today'; import { todayCommand } from '../../commands/today';
import { RenderConfiguration } from '../../core/blitzkit/renderConfiguration';
import handleAutocomplete from './handlers/autocomplete'; import handleAutocomplete from './handlers/autocomplete';
import handleButton from './handlers/button'; import handleButton from './handlers/button';
import handleChatInputCommand from './handlers/chatInputCommand'; import handleChatInputCommand from './handlers/chatInputCommand';
+1 -1
View File
@@ -1,6 +1,6 @@
// a cleaner simplification of Blitz Stars' histories because it's a mess there // a cleaner simplification of Blitz Stars' histories because it's a mess there
import { BlitzStats } from '../core/statistics/compositeStats/constants'; import { BlitzStats } from '@blitzkit/core';
export interface History { export interface History {
all: BlitzStats; all: BlitzStats;
+2 -2
View File
@@ -1,5 +1,5 @@
import { assertSecret } from '../../packages/core/src/blitzkit/assertSecret'; import { assertSecret } from '@blitzkit/core';
import { registerProcesses } from '../core/blitzkit/processes'; import { registerProcesses } from '../../../website/src/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]}`);
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "../../tsconfig.json"
}
+5 -1
View File
@@ -10,8 +10,12 @@
"@octokit/plugin-throttling": "^8.2.0", "@octokit/plugin-throttling": "^8.2.0",
"protobufjs": "^7.4.0", "protobufjs": "^7.4.0",
"lz4js": "^0.2.0", "lz4js": "^0.2.0",
"yaml": "^2.5.0",
"sharp": "^0.33.5",
"dotenv": "^16.4.5",
"pickleparser": "^0.2.1", "pickleparser": "^0.2.1",
"adm-zip": "^0.5.16" "adm-zip": "^0.5.16",
"crc": "^4.3.2"
}, },
"devDependencies": { "devDependencies": {
"@types/adm-zip": "^0.5.5", "@types/adm-zip": "^0.5.5",
+2
View File
@@ -1,3 +1,5 @@
import { BlitzStats } from '../statistics';
export const TREE_TYPES = ['researchable', 'premium', 'collector'] as const; export const TREE_TYPES = ['researchable', 'premium', 'collector'] as const;
export const TANK_CLASSES = [ export const TANK_CLASSES = [
+1 -1
View File
@@ -1,5 +1,5 @@
import { Vector3Tuple } from 'three'; import { Vector3Tuple } from 'three';
import { Tier } from '../core/blitzkit/tankDefinitions'; import { Tier } from '../blitzkit';
export const equipmentPriceMatrix: Record<Tier, Vector3Tuple> = { export const equipmentPriceMatrix: Record<Tier, Vector3Tuple> = {
1: [100, 200, 300], 1: [100, 200, 300],
+1 -1
View File
@@ -1,4 +1,4 @@
import { Region } from '../../constants/regions'; import { Region } from './regions';
export const MIN_REGION_IDS: Record<Region, number> = { export const MIN_REGION_IDS: Record<Region, number> = {
asia: 20e8, asia: 20e8,
@@ -1,5 +1,6 @@
import { Samples } from '.'; import { Samples } from '.';
import { emptyAllStats } from '../../blitz/constants'; import { emptyAllStats } from '../../blitz/constants';
import { BlitzkitStats } from '../../statistics';
export const emptyAverageDefinitionsAllStats: BlitzkitStats = { export const emptyAverageDefinitionsAllStats: BlitzkitStats = {
...emptyAllStats, ...emptyAllStats,
@@ -1,5 +1,5 @@
import { BlitzkitStats } from '../../../../../src/core/statistics/compositeStats/constants';
import { decodeProtobuf } from '../../protobuf/decodeProtobuf'; import { decodeProtobuf } from '../../protobuf/decodeProtobuf';
import { BlitzkitStats } from '../../statistics';
import { asset } from '../asset'; import { asset } from '../asset';
export interface AverageDefinitionsEntry { export interface AverageDefinitionsEntry {
@@ -1,6 +1,6 @@
import { asset } from '@blitzkit/core/src/blitzkit/asset'; import { asset } from '@blitzkit/core/src/blitzkit/asset';
import { fetchCdonLz4 } from '@blitzkit/core/src/blitzkit/fetchCdonLz4'; import { fetchCdonLz4 } from '@blitzkit/core/src/blitzkit/fetchCdonLz4';
import { TankClass } from '../../../../src/components/Tanks'; import { TankClass } from './tankDefinitions';
export interface SkillDefinitions { export interface SkillDefinitions {
classes: Record<TankClass, string[]>; classes: Record<TankClass, string[]>;
@@ -1,4 +1,4 @@
import { CrewMember, GunDefinition, ShellType, Tier } from '.'; import { CrewMember, GunDefinition, ShellType, TankClass, Tier } from '.';
export const SHELL_NAMES: Record<ShellType, string> = { export const SHELL_NAMES: Record<ShellType, string> = {
ap: 'AP', ap: 'AP',
@@ -1,9 +1,12 @@
import { Vector2Tuple } from 'three'; import { Vector2Tuple } from 'three';
import { TankClass, TreeType } from '../../../components/Tanks'; import { TANK_CLASSES, TREE_TYPES } from '../../blitz/constants';
import { asset } from '../asset'; import { asset } from '../asset';
import { fetchCdonLz4 } from '../fetchCdonLz4'; import { fetchCdonLz4 } from '../fetchCdonLz4';
import { TIERS } from './constants'; import { TIERS } from './constants';
export type TankClass = (typeof TANK_CLASSES)[number];
export type TreeType = (typeof TREE_TYPES)[number];
export enum ShellType { export enum ShellType {
AP = 'ap', AP = 'ap',
APCR = 'ap_cr', APCR = 'ap_cr',
@@ -1,5 +1,5 @@
import { RatingPlayer } from '../../commands/ratingLeaderboard'; import { RatingPlayer } from '../../../bot/src/commands/ratingLeaderboard';
import { RatingStats } from '../blitz/getAccountInfo'; import { RatingStats } from '../../../website/src/core/blitz/getAccountInfo';
import { BkrlSuperset1Entry } from '../streams/bkrl'; import { BkrlSuperset1Entry } from '../streams/bkrl';
export function deltaBkrlBlitzStats( export function deltaBkrlBlitzStats(
@@ -1,3 +1,5 @@
import { IndividualTankStats, emptyIndividualTankStats } from '../types';
export function deltaTankStats( export function deltaTankStats(
tanksA: IndividualTankStats[], tanksA: IndividualTankStats[],
tanksB: IndividualTankStats[], tanksB: IndividualTankStats[],
+4 -1
View File
@@ -1,4 +1,7 @@
import { tankDefinitions } from '../blitzkit/tankDefinitions'; 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 calculateWN8 from './calculateWN8'; import calculateWN8 from './calculateWN8';
import sumStats from './sumStats'; import sumStats from './sumStats';
@@ -1,4 +1,4 @@
import { TierWeightsRecord } from '../../components/TierWeights'; import { TierWeightsRecord } from '../../../bot/src/components/TierWeights';
import { tankDefinitions } from '../blitzkit/tankDefinitions'; import { tankDefinitions } from '../blitzkit/tankDefinitions';
import { BlitzStats } from './compositeStats/constants'; import { BlitzStats } from './compositeStats/constants';
+1
View File
@@ -1,3 +1,4 @@
import { emptyAllStats } from '..';
import { BlitzStats } from './compositeStats/constants'; import { BlitzStats } from './compositeStats/constants';
export default function sumStats(allStatsCollection: BlitzStats[]) { export default function sumStats(allStatsCollection: BlitzStats[]) {
Loaded 100 of 255 files, more files were not shown because too many files have changed in this diff. Show more