feat: switched to Node module resolution

This commit is contained in:
TresAbhi committed 2023-07-11 19:54:57 +00:00
1 parent 21158e9081
commit 1d4ac2f133
107 files changed
+539 -531

No files matched your search

+11 -11
View File
@@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our Examples of behavior that contributes to a positive environment for our
community include: community include:
* Demonstrating empathy and kindness toward other people - Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences - Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback - Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, - Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience and learning from the experience
* Focusing on what is best not just for us as individuals, but for the - Focusing on what is best not just for us as individuals, but for the
overall community overall community
Examples of unacceptable behavior include: Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or - The use of sexualized language or imagery, and sexual attention or
advances of any kind advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks - Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment - Public or private harassment
* Publishing others' private information, such as a physical or email - Publishing others' private information, such as a physical or email
address, without their explicit permission address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a - Other conduct which could reasonably be considered inappropriate in a
professional setting professional setting
## Enforcement Responsibilities ## Enforcement Responsibilities
@@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban ### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community **Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals. individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within **Consequence**: A permanent ban from any sort of public interaction within
+6 -6
View File
@@ -1,16 +1,16 @@
// https://vitepress.dev/guide/custom-theme // https://vitepress.dev/guide/custom-theme
import { h } from 'vue' import { h } from 'vue';
import Theme from 'vitepress/theme' import Theme from 'vitepress/theme';
import './style.css' import './style.css';
export default { export default {
extends: Theme, extends: Theme,
Layout: () => { Layout: () => {
return h(Theme.Layout, null, { return h(Theme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots // https://vitepress.dev/guide/extending-default-theme#layout-slots
}) });
}, },
enhanceApp({ app, router, siteData }) { enhanceApp({ app, router, siteData }) {
// ... // ...
} },
} };
+1 -2
View File
@@ -7,7 +7,7 @@
* Colors * Colors
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
:root { :root {
--vp-c-brand: #646cff; --vp-c-brand: #646cff;
--vp-c-brand-light: #747bff; --vp-c-brand-light: #747bff;
--vp-c-brand-lighter: #9499ff; --vp-c-brand-lighter: #9499ff;
@@ -88,4 +88,3 @@
.DocSearch { .DocSearch {
--docsearch-primary-color: var(--vp-c-brand) !important; --docsearch-primary-color: var(--vp-c-brand) !important;
} }
+3 -1
View File
@@ -16,7 +16,8 @@
"start:server": "node --enable-source-maps --trace-warnings dist/server.cjs", "start:server": "node --enable-source-maps --trace-warnings dist/server.cjs",
"host:docs": "vitepress preview docs", "host:docs": "vitepress preview docs",
"zip": "zip -r dist.zip dist", "zip": "zip -r dist.zip dist",
"lint": "npx tsc" "lint": "npx tsc",
"format": "prettier --write \"**/*.@(json|js|jsx|css|md|ts|tsx|html|xml|yml|gltf)\""
}, },
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -42,6 +43,7 @@
"@types/markdown-escape": "^1.1.0", "@types/markdown-escape": "^1.1.0",
"@types/node": "^20.2.1", "@types/node": "^20.2.1",
"@types/react": "^18.2.7", "@types/react": "^18.2.7",
"prettier": "^3.0.0",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"vitepress": "^1.0.0-beta.3" "vitepress": "^1.0.0-beta.3"
} }
+5 -5
View File
@@ -1,9 +1,9 @@
import { Client, GatewayIntentBits } from 'discord.js'; import { Client, GatewayIntentBits } from 'discord.js';
import { DISCORD_TOKEN } from './core/node/arguments.js'; import { DISCORD_TOKEN } from './core/node/arguments';
import { registerErrorHandlers } from './events/error.js'; import { registerErrorHandlers } from './events/error';
import guildMemberAdd from './events/guildMemberAdd.js'; import guildMemberAdd from './events/guildMemberAdd';
import interactionCreate from './events/interactionCreate/index.js'; import interactionCreate from './events/interactionCreate';
import ready from './events/ready.js'; import ready from './events/ready';
export const client = new Client({ export const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers], intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers],
+7 -7
View File
@@ -1,12 +1,12 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import packageJSON from '../../package.json' assert { type: 'json' }; import packageJSON from '../../package.json' assert { type: 'json' };
import { client } from '../bot.js'; import { client } from '../bot';
import { tankopedia } from '../core/blitz/tankopedia.js'; import { tankopedia } from '../core/blitz/tankopedia';
import { tankAverages } from '../core/blitzstars/tankAverages.js'; import { tankAverages } from '../core/blitzstars/tankAverages';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import markdownTable from '../core/discord/markdownTable.js'; import markdownTable from '../core/discord/markdownTable';
import getClientId from '../core/node/getClientId.js'; import getClientId from '../core/node/getClientId';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
const executionStart = new Date().getTime(); const executionStart = new Date().getTime();
+17 -17
View File
@@ -1,21 +1,21 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import calculateWN8 from '../core/blitz/calculateWN8.js'; import calculateWN8 from '../core/blitz/calculateWN8';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import sumStats from '../core/blitz/sumStats.js'; import sumStats from '../core/blitz/sumStats';
import { tankopedia } from '../core/blitz/tankopedia.js'; import { tankopedia } from '../core/blitz/tankopedia';
import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats.js'; import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats';
import getPeriodNow from '../core/blitzstars/getPeriodNow.js'; import getPeriodNow from '../core/blitzstars/getPeriodNow';
import getTimeDaysAgo from '../core/blitzstars/getTimeDaysAgo.js'; import getTimeDaysAgo from '../core/blitzstars/getTimeDaysAgo';
import { tankAverages } from '../core/blitzstars/tankAverages.js'; import { tankAverages } from '../core/blitzstars/tankAverages';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import embedNegative from '../core/discord/embedNegative.js'; import embedNegative from '../core/discord/embedNegative';
import embedPositive from '../core/discord/embedPositive.js'; import embedPositive from '../core/discord/embedPositive';
import markdownTable, { TableInput } from '../core/discord/markdownTable.js'; import markdownTable, { TableInput } from '../core/discord/markdownTable';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
import { PossiblyPromise } from '../types/possiblyPromise.js'; import { PossiblyPromise } from '../types/possiblyPromise';
export type SkilledClan = 'SKLLD' | 'SMRI'; export type SkilledClan = 'SKLLD' | 'SMRI';
+18 -18
View File
@@ -1,22 +1,22 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { CYCLIC_API } from '../constants/cyclic.js'; import { CYCLIC_API } from '../constants/cyclic';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankId from '../core/blitz/resolveTankId.js'; import resolveTankId from '../core/blitz/resolveTankId';
import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups.js'; import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups';
import autocompleteTanks from '../core/discord/autocompleteTanks.js'; import autocompleteTanks from '../core/discord/autocompleteTanks';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import interactionToURL from '../core/discord/interactionToURL.js'; import interactionToURL from '../core/discord/interactionToURL';
import linkButton from '../core/discord/linkButton.js'; import linkButton from '../core/discord/linkButton';
import primaryButton from '../core/discord/primaryButton.js'; import primaryButton from '../core/discord/primaryButton';
import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton.js'; import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton';
import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand.js'; import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand';
import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton.js'; import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import evolution from '../renderers/evolution.js'; import evolution from '../renderers/evolution';
import { StatType } from '../renderers/fullStats.js'; import { StatType } from '../renderers/fullStats';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
export const evolutionCommand: CommandRegistry = { export const evolutionCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+17 -17
View File
@@ -1,21 +1,21 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { CYCLIC_API } from '../constants/cyclic.js'; import { CYCLIC_API } from '../constants/cyclic';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankId from '../core/blitz/resolveTankId.js'; import resolveTankId from '../core/blitz/resolveTankId';
import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups.js'; import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups';
import autocompleteTanks from '../core/discord/autocompleteTanks.js'; import autocompleteTanks from '../core/discord/autocompleteTanks';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import interactionToURL from '../core/discord/interactionToURL.js'; import interactionToURL from '../core/discord/interactionToURL';
import linkButton from '../core/discord/linkButton.js'; import linkButton from '../core/discord/linkButton';
import primaryButton from '../core/discord/primaryButton.js'; import primaryButton from '../core/discord/primaryButton';
import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton.js'; import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton';
import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand.js'; import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand';
import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton.js'; import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import fullStats, { StatType } from '../renderers/fullStats.js'; import fullStats, { StatType } from '../renderers/fullStats';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
export const fullStatsCommand: CommandRegistry = { export const fullStatsCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+1 -4
View File
@@ -2,10 +2,7 @@ import {
SlashCommandBuilder, SlashCommandBuilder,
SlashCommandSubcommandsOnlyBuilder, SlashCommandSubcommandsOnlyBuilder,
} from 'discord.js'; } from 'discord.js';
import { import { COMMANDS_RAW, CommandRegistry } from '../events/interactionCreate';
COMMANDS_RAW,
CommandRegistry,
} from '../events/interactionCreate/index.js';
const RAW_PATH = `https://raw.githubusercontent.com/tresabhi/blitzkrieg/main/docs/`; const RAW_PATH = `https://raw.githubusercontent.com/tresabhi/blitzkrieg/main/docs/`;
const DOCS = { const DOCS = {
+14 -14
View File
@@ -1,18 +1,18 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import GenericStats from '../components/GenericStats/index.js'; import GenericStats from '../components/GenericStats';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import getBlitzClan from '../core/blitz/getBlitzClan.js'; import getBlitzClan from '../core/blitz/getBlitzClan';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addClanChoices from '../core/discord/addClanChoices.js'; import addClanChoices from '../core/discord/addClanChoices';
import autocompleteClan from '../core/discord/autocompleteClan.js'; import autocompleteClan from '../core/discord/autocompleteClan';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
import { ClanInfo } from '../types/clanInfo.js'; import { ClanInfo } from '../types/clanInfo';
const DEFAULT_THRESHOLD = 7; const DEFAULT_THRESHOLD = 7;
+18 -18
View File
@@ -1,26 +1,26 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import * as Tanks from '../components/Tanks/index.js'; import * as Tanks from '../components/Tanks';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import getTankStats from '../core/blitz/getTankStats.js'; import getTankStats from '../core/blitz/getTankStats';
import getTreeType from '../core/blitz/getTreeType.js'; import getTreeType from '../core/blitz/getTreeType';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankName from '../core/blitz/resolveTankName.js'; import resolveTankName from '../core/blitz/resolveTankName';
import { import {
TIER_ROMAN_NUMERALS, TIER_ROMAN_NUMERALS,
Tier, Tier,
tankopedia, tankopedia,
} from '../core/blitz/tankopedia.js'; } from '../core/blitz/tankopedia';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
const COMP_TANKS = [ const COMP_TANKS = [
// light tanks // light tanks
+1 -1
View File
@@ -1,5 +1,5 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
export const pingCommand: CommandRegistry<true> = { export const pingCommand: CommandRegistry<true> = {
inProduction: true, inProduction: true,
+10 -12
View File
@@ -1,18 +1,16 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { startCase } from 'lodash'; import { startCase } from 'lodash';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import markdownTable, { import markdownTable, { TableInputEntry } from '../core/discord/markdownTable';
TableInputEntry, import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
} from '../core/discord/markdownTable.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import { CommandRegistry } from '../events/interactionCreate';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { AccountAchievements } from '../types/accountAchievements';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { AccountInfo } from '../types/accountInfo';
import { AccountAchievements } from '../types/accountAchievements.js';
import { AccountInfo } from '../types/accountInfo.js';
type SortBy = 'name' | 'count'; type SortBy = 'name' | 'count';
+9 -9
View File
@@ -1,14 +1,14 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import markdownTable from '../core/discord/markdownTable.js'; import markdownTable from '../core/discord/markdownTable';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
export const playerInfoCommand: CommandRegistry = { export const playerInfoCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+8 -8
View File
@@ -1,13 +1,13 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers.js'; import { BLITZ_SERVERS, BlitzServer } from '../constants/servers';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addClanChoices from '../core/discord/addClanChoices.js'; import addClanChoices from '../core/discord/addClanChoices';
import addServerChoices from '../core/discord/addServerChoices.js'; import addServerChoices from '../core/discord/addServerChoices';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { ClanList } from '../types/clanList.js'; import { ClanList } from '../types/clanList';
export const searchClansCommand: CommandRegistry = { export const searchClansCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+9 -9
View File
@@ -1,14 +1,14 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers.js'; import { BLITZ_SERVERS, BlitzServer } from '../constants/servers';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import { usernamePattern } from '../core/blitz/listPlayers.js'; import { usernamePattern } from '../core/blitz/listPlayers';
import addServerChoices from '../core/discord/addServerChoices.js'; import addServerChoices from '../core/discord/addServerChoices';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountList } from '../types/accountList.js'; import { AccountList } from '../types/accountList';
export const searchPlayersCommand: CommandRegistry = { export const searchPlayersCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+4 -4
View File
@@ -1,10 +1,10 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { go } from 'fuzzysort'; import { go } from 'fuzzysort';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import { TANK_NAMES } from '../core/blitz/tankopedia.js'; import { TANK_NAMES } from '../core/blitz/tankopedia';
import addTankChoices from '../core/discord/addTankChoices.js'; import addTankChoices from '../core/discord/addTankChoices';
import embedInfo from '../core/discord/embedInfo.js'; import embedInfo from '../core/discord/embedInfo';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
export const searchTanksCommand: CommandRegistry = { export const searchTanksCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+18 -18
View File
@@ -1,22 +1,22 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { CYCLIC_API } from '../constants/cyclic.js'; import { CYCLIC_API } from '../constants/cyclic';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankId from '../core/blitz/resolveTankId.js'; import resolveTankId from '../core/blitz/resolveTankId';
import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups.js'; import addStatTypeSubCommandGroups from '../core/discord/addStatTypeSubCommandGroups';
import autocompleteTanks from '../core/discord/autocompleteTanks.js'; import autocompleteTanks from '../core/discord/autocompleteTanks';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import interactionToURL from '../core/discord/interactionToURL.js'; import interactionToURL from '../core/discord/interactionToURL';
import linkButton from '../core/discord/linkButton.js'; import linkButton from '../core/discord/linkButton';
import primaryButton from '../core/discord/primaryButton.js'; import primaryButton from '../core/discord/primaryButton';
import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton.js'; import resolvePeriodFromButton from '../core/discord/resolvePeriodFromButton';
import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand.js'; import resolvePeriodFromCommand from '../core/discord/resolvePeriodFromCommand';
import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton.js'; import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { StatType } from '../renderers/fullStats.js'; import { StatType } from '../renderers/fullStats';
import stats from '../renderers/stats.js'; import stats from '../renderers/stats';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
export const statsCommand: CommandRegistry = { export const statsCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+13 -13
View File
@@ -1,17 +1,17 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import { CYCLIC_API } from '../constants/cyclic.js'; import { CYCLIC_API } from '../constants/cyclic';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import interactionToURL from '../core/discord/interactionToURL.js'; import interactionToURL from '../core/discord/interactionToURL';
import linkButton from '../core/discord/linkButton.js'; import linkButton from '../core/discord/linkButton';
import primaryButton from '../core/discord/primaryButton.js'; import primaryButton from '../core/discord/primaryButton';
import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton.js'; import resolvePlayerFromButton from '../core/discord/resolvePlayerFromButton';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import today from '../renderers/today.js'; import today from '../renderers/today';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
export const todayCommand: CommandRegistry = { export const todayCommand: CommandRegistry = {
inProduction: true, inProduction: true,
+10 -10
View File
@@ -1,16 +1,16 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape'; import markdownEscape from 'markdown-escape';
import discord from '../../discord.json' assert { type: 'json' }; import discord from '../../discord.json' assert { type: 'json' };
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import addUsernameChoices from '../core/discord/addUsernameChoices.js'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername.js'; import autocompleteUsername from '../core/discord/autocompleteUsername';
import embedNegative from '../core/discord/embedNegative.js'; import embedNegative from '../core/discord/embedNegative';
import embedPositive from '../core/discord/embedPositive.js'; import embedPositive from '../core/discord/embedPositive';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand.js'; import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { CommandRegistry } from '../events/interactionCreate/index.js'; import { CommandRegistry } from '../events/interactionCreate';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
export const verifyCommand: CommandRegistry = { export const verifyCommand: CommandRegistry = {
inProduction: true, inProduction: true,
@@ -1,6 +1,6 @@
import { Percentile } from '../../../../../constants/percentiles.js'; import { Percentile } from '../../../../../constants/percentiles';
import hslToHex from '../../../../../core/node/hslToHex.js'; import hslToHex from '../../../../../core/node/hslToHex';
import { PERCENTILE_COLORS } from '../../../../PercentileIndicator.js'; import { PERCENTILE_COLORS } from '../../../../PercentileIndicator';
export enum GlowSide { export enum GlowSide {
Top, Top,
@@ -1,8 +1,8 @@
import { Percentile } from '../../../../constants/percentiles.js'; import { Percentile } from '../../../../constants/percentiles';
import getWN8Percentile from '../../../../core/blitz/getWN8Percentile.js'; import getWN8Percentile from '../../../../core/blitz/getWN8Percentile';
import { theme } from '../../../../stitches.config.js'; import { theme } from '../../../../stitches.config';
import { PERCENTILE_COLORS } from '../../../PercentileIndicator.js'; import { PERCENTILE_COLORS } from '../../../PercentileIndicator';
import { Glow, GlowSide } from './components/Glow.js'; import { Glow, GlowSide } from './components/Glow';
export interface WN8DisplayProps { export interface WN8DisplayProps {
WN8?: number; WN8?: number;
@@ -1,4 +1,4 @@
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
export enum WN8SurroundingStatAlign { export enum WN8SurroundingStatAlign {
Left, Left,
+3 -3
View File
@@ -1,9 +1,9 @@
import { AllStats, SupplementaryStats } from '../../types/accountInfo.js'; import { AllStats, SupplementaryStats } from '../../types/accountInfo';
import { WN8Display } from './components/WN8Display/index.js'; import { WN8Display } from './components/WN8Display';
import { import {
WN8SurroundingStat, WN8SurroundingStat,
WN8SurroundingStatAlign, WN8SurroundingStatAlign,
} from './components/WN8SurroundingStat.js'; } from './components/WN8SurroundingStat';
export interface AllStatsOverviewProps { export interface AllStatsOverviewProps {
stats: AllStats; stats: AllStats;
+4 -4
View File
@@ -1,7 +1,7 @@
import getWN8Percentile from '../../../core/blitz/getWN8Percentile.js'; import getWN8Percentile from '../../../core/blitz/getWN8Percentile';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
import { RowDiscriminator } from './RowDiscriminator.js'; import { RowDiscriminator } from './RowDiscriminator';
import { RowStat } from './RowStat.js'; import { RowStat } from './RowStat';
export interface RowProps { export interface RowProps {
name: string; name: string;
@@ -1,4 +1,4 @@
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
export interface RowDiscriminatorProps { export interface RowDiscriminatorProps {
name: string; name: string;
@@ -1,6 +1,6 @@
import { Percentile } from '../../../constants/percentiles.js'; import { Percentile } from '../../../constants/percentiles';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
import PercentileIndicator from '../../PercentileIndicator.js'; import PercentileIndicator from '../../PercentileIndicator';
export interface RowStatProps { export interface RowStatProps {
name: string; name: string;
+4 -4
View File
@@ -1,4 +1,4 @@
export * from './components/Root.js'; export * from './components/Root';
export * from './components/Row.js'; export * from './components/Row';
export * from './components/RowDiscriminator.js'; export * from './components/RowDiscriminator';
export * from './components/RowStat.js'; export * from './components/RowStat';
@@ -1,6 +1,6 @@
import { Percentile } from '../../../constants/percentiles.js'; import { Percentile } from '../../../constants/percentiles';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
import PercentileIndicator from '../../PercentileIndicator.js'; import PercentileIndicator from '../../PercentileIndicator';
export interface CardItem { export interface CardItem {
label: string; label: string;
+6 -6
View File
@@ -1,9 +1,9 @@
import getWN8Percentile from '../../core/blitz/getWN8Percentile.js'; import getWN8Percentile from '../../core/blitz/getWN8Percentile';
import isNumber from '../../core/node/isNumber.js'; import isNumber from '../../core/node/isNumber';
import { AllStats, SupplementaryStats } from '../../types/accountInfo.js'; import { AllStats, SupplementaryStats } from '../../types/accountInfo';
import { Card } from './components/Card.js'; import { Card } from './components/Card';
import { Root } from './components/Root.js'; import { Root } from './components/Root';
import { Row } from './components/Row.js'; import { Row } from './components/Row';
// TODO: remove the .js endings // TODO: remove the .js endings
@@ -1,5 +1,5 @@
import { Stat } from '../index.js'; import { Stat } from '..';
import GenericStatsRow from './GenericStatsRow.js'; import GenericStatsRow from './GenericStatsRow';
export interface GenericStatsColumnProps { export interface GenericStatsColumnProps {
stats: Stat[]; stats: Stat[];
@@ -1,6 +1,6 @@
import { theme } from '../../../stitches.config.js'; import { Stat } from '..';
import PercentileIndicator from '../../PercentileIndicator.js'; import { theme } from '../../../stitches.config';
import { Stat } from '../index.js'; import PercentileIndicator from '../../PercentileIndicator';
export interface GenericStatsRowProps { export interface GenericStatsRowProps {
stat: Stat; stat: Stat;
+2 -2
View File
@@ -1,5 +1,5 @@
import { Percentile } from '../../constants/percentiles.js'; import { Percentile } from '../../constants/percentiles';
import GenericStatsColumn from './components/GenericStatsColumn.js'; import GenericStatsColumn from './components/GenericStatsColumn';
export type Stat = export type Stat =
| [string, string | number | undefined] | [string, string | number | undefined]
+1 -1
View File
@@ -1,5 +1,5 @@
import { blue, green, red, slateDark } from '@radix-ui/colors'; import { blue, green, red, slateDark } from '@radix-ui/colors';
import { GRAPH_HEIGHT, GRAPH_WIDTH } from './Root.js'; import { GRAPH_HEIGHT, GRAPH_WIDTH } from './Root';
export enum LineColor { export enum LineColor {
Red, Red,
+2 -2
View File
@@ -1,6 +1,6 @@
import { times } from 'lodash'; import { times } from 'lodash';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
import { MarginInputProps } from './Root.js'; import { MarginInputProps } from './Root';
export enum MarginOrientation { export enum MarginOrientation {
Vertical, Vertical,
+2 -2
View File
@@ -1,7 +1,7 @@
import { times } from 'lodash'; import { times } from 'lodash';
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
import { Margin, MarginOrientation } from './Margin.js'; import { Margin, MarginOrientation } from './Margin';
export const GRAPH_WIDTH = 544; export const GRAPH_WIDTH = 544;
export const GRAPH_HEIGHT = 320; export const GRAPH_HEIGHT = 320;
+3 -3
View File
@@ -1,3 +1,3 @@
export * from './components/Line.js'; export * from './components/Line';
export * from './components/Margin.js'; export * from './components/Margin';
export * from './components/Root.js'; export * from './components/Root';
+1 -1
View File
@@ -1,4 +1,4 @@
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
export enum NoDataType { export enum NoDataType {
BattlesInPeriod, BattlesInPeriod,
+1 -1
View File
@@ -10,7 +10,7 @@ import {
teal, teal,
yellow, yellow,
} from '@radix-ui/colors'; } from '@radix-ui/colors';
import { Percentile } from '../constants/percentiles.js'; import { Percentile } from '../constants/percentiles';
export interface PercentileIndicatorProps { export interface PercentileIndicatorProps {
percentile: Percentile; percentile: Percentile;
+1 -1
View File
@@ -1,5 +1,5 @@
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
export enum PoweredByType { export enum PoweredByType {
BlitzStars, BlitzStars,
+2 -2
View File
@@ -2,8 +2,8 @@ import {
TANK_ICONS, TANK_ICONS,
TANK_ICONS_COLLECTOR, TANK_ICONS_COLLECTOR,
TANK_ICONS_PREMIUM, TANK_ICONS_PREMIUM,
} from '../../../core/blitz/tankopedia.js'; } from '../../../core/blitz/tankopedia';
import { theme } from '../../../stitches.config.js'; import { theme } from '../../../stitches.config';
export enum TreeType { export enum TreeType {
TechTree, TechTree,
+3 -3
View File
@@ -1,3 +1,3 @@
export * from './components/Column.js'; export * from './components/Column';
export * from './components/Item.js'; export * from './components/Item';
export * from './components/Root.js'; export * from './components/Root';
+2 -2
View File
@@ -1,5 +1,5 @@
import { TIER_ROMAN_NUMERALS, Tier } from '../core/blitz/tankopedia.js'; import { TIER_ROMAN_NUMERALS, Tier } from '../core/blitz/tankopedia';
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
export type TierWeightsRecord = Partial<Record<Tier, number>>; export type TierWeightsRecord = Partial<Record<Tier, number>>;
+2 -2
View File
@@ -1,5 +1,5 @@
import isDev from '../core/node/isDev.js'; import isDev from '../core/node/isDev';
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
export interface TitleBarProps { export interface TitleBarProps {
name: string; name: string;
+1 -1
View File
@@ -1,5 +1,5 @@
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
export interface WrapperProps { export interface WrapperProps {
children: ReactNode; children: ReactNode;
+1 -1
View File
@@ -1,4 +1,4 @@
import { AllStats } from '../../types/accountInfo.js'; import { AllStats } from '../../types/accountInfo';
/** /**
* Formula from https://web.archive.org/web/20190105064817/http://wiki.wnefficiency.net/pages/WN8 * Formula from https://web.archive.org/web/20190105064817/http://wiki.wnefficiency.net/pages/WN8
+1 -1
View File
@@ -1,4 +1,4 @@
import { AllStats } from '../../types/accountInfo.js'; import { AllStats } from '../../types/accountInfo';
export default function diffStats(stats1: AllStats, stats2: AllStats) { export default function diffStats(stats1: AllStats, stats2: AllStats) {
function diff(value: (allStats: AllStats) => number) { function diff(value: (allStats: AllStats) => number) {
+4 -4
View File
@@ -1,7 +1,7 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { serverAndIdPattern } from '../discord/resolvePlayerFromCommand.js'; import { serverAndIdPattern } from '../discord/resolvePlayerFromCommand';
import throwError from '../node/throwError.js'; import throwError from '../node/throwError';
import listClans from './listClans.js'; import listClans from './listClans';
export default async function getBlitzClan(clan: string) { export default async function getBlitzClan(clan: string) {
if (serverAndIdPattern.test(clan)) { if (serverAndIdPattern.test(clan)) {
+5 -5
View File
@@ -1,8 +1,8 @@
import { BLITZ_SERVERS, BlitzServer } from '../../constants/servers.js'; import { BLITZ_SERVERS, BlitzServer } from '../../constants/servers';
import { TanksStats } from '../../types/tanksStats.js'; import { TanksStats } from '../../types/tanksStats';
import { WARGAMING_APPLICATION_ID } from '../node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../node/arguments';
import throwError from '../node/throwError.js'; import throwError from '../node/throwError';
import getWargamingResponse from './getWargamingResponse.js'; import getWargamingResponse from './getWargamingResponse';
export default async function getTankStats(server: BlitzServer, id: number) { export default async function getTankStats(server: BlitzServer, id: number) {
const tankStats = await getWargamingResponse<TanksStats>( const tankStats = await getWargamingResponse<TanksStats>(
+2 -2
View File
@@ -1,5 +1,5 @@
import { TreeType } from '../../components/Tanks/index.js'; import { TreeType } from '../../components/Tanks';
import { tankopedia } from './tankopedia.js'; import { tankopedia } from './tankopedia';
export default async function getTreeType(id: number) { export default async function getTreeType(id: number) {
const entry = (await tankopedia)[id]; const entry = (await tankopedia)[id];
+1 -1
View File
@@ -1,4 +1,4 @@
import { Percentile } from '../../constants/percentiles.js'; import { Percentile } from '../../constants/percentiles';
export const WN8_PERCENTILES: [number, Percentile][] = [ export const WN8_PERCENTILES: [number, Percentile][] = [
[0, Percentile.VeryBad], [0, Percentile.VeryBad],
+1 -1
View File
@@ -1,4 +1,4 @@
import throwError from '../node/throwError.js'; import throwError from '../node/throwError';
export type WargamingResponse<Data extends object> = export type WargamingResponse<Data extends object> =
| { | {
+4 -4
View File
@@ -1,7 +1,7 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { Clan, ClanList } from '../../types/clanList.js'; import { Clan, ClanList } from '../../types/clanList';
import { WARGAMING_APPLICATION_ID } from '../node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../node/arguments';
import getWargamingResponse from './getWargamingResponse.js'; import getWargamingResponse from './getWargamingResponse';
export type ClanListWithServer = (Clan & { export type ClanListWithServer = (Clan & {
server: 'com' | 'eu' | 'asia'; server: 'com' | 'eu' | 'asia';
+4 -4
View File
@@ -1,7 +1,7 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { Account, AccountList } from '../../types/accountList.js'; import { Account, AccountList } from '../../types/accountList';
import { WARGAMING_APPLICATION_ID } from '../node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../node/arguments';
import getWargamingResponse from './getWargamingResponse.js'; import getWargamingResponse from './getWargamingResponse';
export type AccountListWithServer = (Account & { export type AccountListWithServer = (Account & {
server: 'com' | 'eu' | 'asia'; server: 'com' | 'eu' | 'asia';
+2 -2
View File
@@ -1,6 +1,6 @@
import { go } from 'fuzzysort'; import { go } from 'fuzzysort';
import throwError from '../node/throwError.js'; import throwError from '../node/throwError';
import { TANKS, tankopedia } from './tankopedia.js'; import { TANKS, tankopedia } from './tankopedia';
export default async function resolveTankId(tank: string) { export default async function resolveTankId(tank: string) {
const number = parseInt(tank); const number = parseInt(tank);
+1 -1
View File
@@ -1,4 +1,4 @@
import { tankopedia } from './tankopedia.js'; import { tankopedia } from './tankopedia';
export default async function resolveTankName(tankId: number) { export default async function resolveTankName(tankId: number) {
const tankopediaName = (await tankopedia)[tankId]?.name; const tankopediaName = (await tankopedia)[tankId]?.name;
+2 -2
View File
@@ -1,5 +1,5 @@
import { AllStats } from '../../types/accountInfo.js'; import { AllStats } from '../../types/accountInfo';
import { emptyAllStats } from '../blitzstars/getDiffedTankStats.js'; import { emptyAllStats } from '../blitzstars/getDiffedTankStats';
export default function sumStats(allStatsCollection: AllStats[]) { export default function sumStats(allStatsCollection: AllStats[]) {
return allStatsCollection.reduce((accumulated, current) => { return allStatsCollection.reduce((accumulated, current) => {
+3 -3
View File
@@ -1,9 +1,9 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { AllStats } from '../../types/accountInfo.js'; import { AllStats } from '../../types/accountInfo';
import getTankHistories, { import getTankHistories, {
TankHistories, TankHistories,
TankHistoryRaw, TankHistoryRaw,
} from './getTankHistories.js'; } from './getTankHistories';
export const emptyAllStats: AllStats = { export const emptyAllStats: AllStats = {
battles: 0, battles: 0,
+3 -3
View File
@@ -1,6 +1,6 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { Period } from '../discord/addPeriodSubCommands.js'; import { Period } from '../discord/addPeriodSubCommands';
import getTimeDaysAgo from './getTimeDaysAgo.js'; import getTimeDaysAgo from './getTimeDaysAgo';
export default function getPeriodStart( export default function getPeriodStart(
server: BlitzServer, server: BlitzServer,
+7 -7
View File
@@ -1,14 +1,14 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { AccountInfo, AllStats } from '../../types/accountInfo.js'; import { AccountInfo, AllStats } from '../../types/accountInfo';
import { import {
GetHistoriesOptions, GetHistoriesOptions,
Histories, Histories,
History, History,
getHistoriesDefaultOptions, getHistoriesDefaultOptions,
} from '../../types/histories.js'; } from '../../types/histories';
import getWargamingResponse from '../blitz/getWargamingResponse.js'; import getWargamingResponse from '../blitz/getWargamingResponse';
import { WARGAMING_APPLICATION_ID } from '../node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../node/arguments';
import { emptyAllStats } from './getDiffedTankStats.js'; import { emptyAllStats } from './getDiffedTankStats';
export interface PlayerHistoryRaw { export interface PlayerHistoryRaw {
clan: { clan_id: number; name: string; tag: string }; clan: { clan_id: number; name: string; tag: string };
@@ -44,7 +44,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;
+5 -5
View File
@@ -1,12 +1,12 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { import {
GetHistoriesOptions, GetHistoriesOptions,
Histories, Histories,
History, History,
getHistoriesDefaultOptions, getHistoriesDefaultOptions,
} from '../../types/histories.js'; } from '../../types/histories';
import getTankStats from '../blitz/getTankStats.js'; import getTankStats from '../blitz/getTankStats';
import { emptyAllStats } from './getDiffedTankStats.js'; import { emptyAllStats } from './getDiffedTankStats';
export interface TankHistory extends History { export interface TankHistory extends History {
tank_id: number; tank_id: number;
@@ -48,7 +48,7 @@ export default async function getTankHistories(
all: history.all, all: history.all,
last_battle_time: history.last_battle_time, last_battle_time: history.last_battle_time,
tank_id: history.tank_id, tank_id: history.tank_id,
} satisfies TankHistory), }) satisfies TankHistory,
); );
const compliantTanks: number[] = []; const compliantTanks: number[] = [];
const lastBattles: Record<number, number> = {}; const lastBattles: Record<number, number> = {};
+1 -1
View File
@@ -1,4 +1,4 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
export const TIME_ZONE_MAPPINGS: Record<BlitzServer, number> = { export const TIME_ZONE_MAPPINGS: Record<BlitzServer, number> = {
com: -5, // Central North American Time com: -5, // Central North American Time
+3 -3
View File
@@ -1,6 +1,6 @@
import sumStats from '../blitz/sumStats.js'; import sumStats from '../blitz/sumStats';
import { emptyAllStats } from './getDiffedTankStats.js'; import { emptyAllStats } from './getDiffedTankStats';
import { tankAverages } from './tankAverages.js'; import { tankAverages } from './tankAverages';
console.log('Calculating player average...'); console.log('Calculating player average...');
export const playerAverage = Object.entries(await tankAverages).reduce( export const playerAverage = Object.entries(await tankAverages).reduce(
+1 -1
View File
@@ -1,4 +1,4 @@
import { AllStats } from '../../types/accountInfo.js'; import { AllStats } from '../../types/accountInfo';
export interface SpecialStats { export interface SpecialStats {
winrate: number; winrate: number;
+1 -1
View File
@@ -2,7 +2,7 @@ import {
SlashCommandSubcommandBuilder, SlashCommandSubcommandBuilder,
SlashCommandSubcommandGroupBuilder, SlashCommandSubcommandGroupBuilder,
} from 'discord.js'; } from 'discord.js';
import { PERIOD_NAMES } from '../discord/resolvePeriodFromCommand.js'; import { PERIOD_NAMES } from '../discord/resolvePeriodFromCommand';
export type Period = 'today' | '30' | '60' | '90' | 'career' | 'custom'; export type Period = 'today' | '30' | '60' | '90' | 'career' | 'custom';
+1 -1
View File
@@ -1,5 +1,5 @@
import { SlashCommandStringOption } from 'discord.js'; import { SlashCommandStringOption } from 'discord.js';
import { BLITZ_SERVERS } from '../../constants/servers.js'; import { BLITZ_SERVERS } from '../../constants/servers';
export default function addServerChoices(option: SlashCommandStringOption) { export default function addServerChoices(option: SlashCommandStringOption) {
return option return option
@@ -1,7 +1,7 @@
import { SlashCommandBuilder } from 'discord.js'; import { SlashCommandBuilder } from 'discord.js';
import addPeriodSubCommands from './addPeriodSubCommands.js'; import addPeriodSubCommands from './addPeriodSubCommands';
import addTankChoices from './addTankChoices.js'; import addTankChoices from './addTankChoices';
import addUsernameChoices from './addUsernameChoices.js'; import addUsernameChoices from './addUsernameChoices';
export default function addStatTypeSubCommandGroups( export default function addStatTypeSubCommandGroups(
option: SlashCommandBuilder, option: SlashCommandBuilder,
+3 -3
View File
@@ -3,8 +3,8 @@ import {
AutocompleteInteraction, AutocompleteInteraction,
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import { BLITZ_SERVERS } from '../../constants/servers.js'; import { BLITZ_SERVERS } from '../../constants/servers';
import listClans from '../blitz/listClans.js'; import listClans from '../blitz/listClans';
export default async function autocompleteClan( export default async function autocompleteClan(
interaction: AutocompleteInteraction<CacheType>, interaction: AutocompleteInteraction<CacheType>,
@@ -20,7 +20,7 @@ export default async function autocompleteClan(
({ ({
name: `${player.name} (${BLITZ_SERVERS[player.server]})`, name: `${player.name} (${BLITZ_SERVERS[player.server]})`,
value: `${player.server}/${player.clan_id}`, value: `${player.server}/${player.clan_id}`,
} satisfies ApplicationCommandOptionChoiceData<string>), }) satisfies ApplicationCommandOptionChoiceData<string>,
) )
: [], : [],
); );
+7 -4
View File
@@ -4,8 +4,8 @@ import {
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import { go } from 'fuzzysort'; import { go } from 'fuzzysort';
import resolveTankName from '../blitz/resolveTankName.js'; import resolveTankName from '../blitz/resolveTankName';
import { TANKS } from '../blitz/tankopedia.js'; import { TANKS } from '../blitz/tankopedia';
export default async function autocompleteTanks( export default async function autocompleteTanks(
interaction: AutocompleteInteraction<CacheType>, interaction: AutocompleteInteraction<CacheType>,
@@ -16,14 +16,17 @@ export default async function autocompleteTanks(
await interaction.respond( await interaction.respond(
focusedOption.value focusedOption.value
? await Promise.all( ? await Promise.all(
go(focusedOption.value, await TANKS, { keys: ['name'], limit: 10 }).map( go(focusedOption.value, await TANKS, {
keys: ['name'],
limit: 10,
}).map(
async (item) => async (item) =>
({ ({
name: item.obj.name name: item.obj.name
? item.obj.name ? item.obj.name
: await resolveTankName(item.obj.tank_id), : await resolveTankName(item.obj.tank_id),
value: `${item.obj.tank_id}`, value: `${item.obj.tank_id}`,
} satisfies ApplicationCommandOptionChoiceData<string>), }) satisfies ApplicationCommandOptionChoiceData<string>,
), ),
) )
: [], : [],
+3 -3
View File
@@ -3,8 +3,8 @@ import {
AutocompleteInteraction, AutocompleteInteraction,
CacheType, CacheType,
} from 'discord.js'; } from 'discord.js';
import { BLITZ_SERVERS } from '../../constants/servers.js'; import { BLITZ_SERVERS } from '../../constants/servers';
import listPlayers from '../blitz/listPlayers.js'; import listPlayers from '../blitz/listPlayers';
export default async function autocompleteUsername( export default async function autocompleteUsername(
interaction: AutocompleteInteraction<CacheType>, interaction: AutocompleteInteraction<CacheType>,
@@ -21,7 +21,7 @@ export default async function autocompleteUsername(
({ ({
name: `${player.nickname} (${BLITZ_SERVERS[player.server]})`, name: `${player.nickname} (${BLITZ_SERVERS[player.server]})`,
value: `${player.server}/${player.account_id}`, value: `${player.server}/${player.account_id}`,
} satisfies ApplicationCommandOptionChoiceData<string>), }) satisfies ApplicationCommandOptionChoiceData<string>,
) )
: [], : [],
); );
+1 -1
View File
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { ACCENT_COLOR } from '../../constants/colors.js'; import { ACCENT_COLOR } from '../../constants/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 -1
View File
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { NEGATIVE_COLOR } from '../../constants/colors.js'; import { NEGATIVE_COLOR } from '../../constants/colors';
export default function embedNegative(title: string, description: string) { export default function embedNegative(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
+1 -1
View File
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { POSITIVE_COLOR } from '../../constants/colors.js'; import { POSITIVE_COLOR } from '../../constants/colors';
export default function embedPositive(title: string, description: string) { export default function embedPositive(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
+1 -1
View File
@@ -1,5 +1,5 @@
import { EmbedBuilder } from 'discord.js'; import { EmbedBuilder } from 'discord.js';
import { WARNING_COLOR } from '../../constants/colors.js'; import { WARNING_COLOR } from '../../constants/colors';
export default function embedWarning(title: string, description: string) { export default function embedWarning(title: string, description: string) {
return new EmbedBuilder() return new EmbedBuilder()
@@ -4,8 +4,8 @@ import {
EmbedBuilder, EmbedBuilder,
InteractionEditReplyOptions, InteractionEditReplyOptions,
} from 'discord.js'; } from 'discord.js';
import { InteractionReturnable } from '../../events/interactionCreate/index.js'; import { InteractionReturnable } from '../../events/interactionCreate';
import jsxToPng from '../node/jsxToPng.js'; import jsxToPng from '../node/jsxToPng';
export default async function normalizeInteractionReturnable( export default async function normalizeInteractionReturnable(
returnable: InteractionReturnable, returnable: InteractionReturnable,
+3 -3
View File
@@ -1,7 +1,7 @@
import { ButtonInteraction, CacheType } from 'discord.js'; import { ButtonInteraction, CacheType } from 'discord.js';
import { CYCLIC_API } from '../../constants/cyclic.js'; import { CYCLIC_API } from '../../constants/cyclic';
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import resolvePeriodFromURL from '../express/resolvePeriodFromURL.js'; import resolvePeriodFromURL from '../express/resolvePeriodFromURL';
export default function resolvePeriodFromButton( export default function resolvePeriodFromButton(
server: BlitzServer, server: BlitzServer,
+5 -5
View File
@@ -1,9 +1,9 @@
import { CacheType, ChatInputCommandInteraction } from 'discord.js'; import { CacheType, ChatInputCommandInteraction } from 'discord.js';
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import getPeriodNow from '../blitzstars/getPeriodNow.js'; import getPeriodNow from '../blitzstars/getPeriodNow';
import getPeriodStart from '../blitzstars/getPeriodStart.js'; import getPeriodStart from '../blitzstars/getPeriodStart';
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo.js'; import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
import { Period } from '../discord/addPeriodSubCommands.js'; import { Period } from '../discord/addPeriodSubCommands';
export const PERIOD_NAMES: Record<Period, string> = { export const PERIOD_NAMES: Record<Period, string> = {
today: "Today's statistics", today: "Today's statistics",
+2 -2
View File
@@ -1,6 +1,6 @@
import { ButtonInteraction, CacheType } from 'discord.js'; import { ButtonInteraction, CacheType } from 'discord.js';
import { CYCLIC_API } from '../../constants/cyclic.js'; import { CYCLIC_API } from '../../constants/cyclic';
import resolvePlayerFromURL from '../express/resolvePlayerFromURL.js'; import resolvePlayerFromURL from '../express/resolvePlayerFromURL';
export default async function resolvePlayerFromButton( export default async function resolvePlayerFromButton(
interaction: ButtonInteraction<CacheType>, interaction: ButtonInteraction<CacheType>,
+3 -3
View File
@@ -1,9 +1,9 @@
import { CacheType, ChatInputCommandInteraction } from 'discord.js'; import { CacheType, ChatInputCommandInteraction } from 'discord.js';
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import listPlayers, { import listPlayers, {
usernamePatternWithoutPosition, usernamePatternWithoutPosition,
} from '../blitz/listPlayers.js'; } from '../blitz/listPlayers';
import throwError from '../node/throwError.js'; import throwError from '../node/throwError';
export const serverAndIdPattern = /(com|eu|asia)\/[0-9]+/; export const serverAndIdPattern = /(com|eu|asia)\/[0-9]+/;
+2 -2
View File
@@ -1,5 +1,5 @@
import { RouteReturnable } from '../../server.js'; import { RouteReturnable } from '../../server';
import jsxToSvg from '../node/jsxToSvg.js'; import jsxToSvg from '../node/jsxToSvg';
export default async function normalizeRouteReturnable( export default async function normalizeRouteReturnable(
returnable: RouteReturnable, returnable: RouteReturnable,
+3 -3
View File
@@ -1,7 +1,7 @@
import { Request } from 'express'; import { Request } from 'express';
import { CYCLIC_API } from '../../constants/cyclic.js'; import { CYCLIC_API } from '../../constants/cyclic';
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import resolvePeriodFromURL from './resolvePeriodFromURL.js'; import resolvePeriodFromURL from './resolvePeriodFromURL';
export default function resolvePeriodFromRequest( export default function resolvePeriodFromRequest(
server: BlitzServer, server: BlitzServer,
+6 -6
View File
@@ -1,13 +1,13 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import getPeriodNow from '../blitzstars/getPeriodNow.js'; import getPeriodNow from '../blitzstars/getPeriodNow';
import getPeriodStart from '../blitzstars/getPeriodStart.js'; import getPeriodStart from '../blitzstars/getPeriodStart';
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo.js'; import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
import { Period } from '../discord/addPeriodSubCommands.js'; import { Period } from '../discord/addPeriodSubCommands';
import { import {
EVOLUTION_PERIOD_NAMES, EVOLUTION_PERIOD_NAMES,
PERIOD_NAMES, PERIOD_NAMES,
ResolvedPeriod, ResolvedPeriod,
} from '../discord/resolvePeriodFromCommand.js'; } from '../discord/resolvePeriodFromCommand';
export default function resolvePeriodFromURL( export default function resolvePeriodFromURL(
server: BlitzServer, server: BlitzServer,
+2 -2
View File
@@ -1,6 +1,6 @@
import { Request } from 'express'; import { Request } from 'express';
import { CYCLIC_API } from '../../constants/cyclic.js'; import { CYCLIC_API } from '../../constants/cyclic';
import resolvePlayerFromURL from './resolvePlayerFromURL.js'; import resolvePlayerFromURL from './resolvePlayerFromURL';
export default function resolvePlayerFromRequest(request: Request) { export default function resolvePlayerFromRequest(request: Request) {
return resolvePlayerFromURL(`${CYCLIC_API}${request.originalUrl}`); return resolvePlayerFromURL(`${CYCLIC_API}${request.originalUrl}`);
+2 -2
View File
@@ -1,5 +1,5 @@
import { BlitzServer } from '../../constants/servers.js'; import { BlitzServer } from '../../constants/servers';
import { ResolvedPlayer } from '../discord/resolvePlayerFromCommand.js'; import { ResolvedPlayer } from '../discord/resolvePlayerFromCommand';
export default function resolvePlayerFromURL(urlString: string) { export default function resolvePlayerFromURL(urlString: string) {
const url = new URL(urlString); const url = new URL(urlString);
+1 -1
View File
@@ -1,5 +1,5 @@
import discord from '../../../discord.json' assert { type: 'json' }; import discord from '../../../discord.json' assert { type: 'json' };
import isDev from './isDev.js'; import isDev from './isDev';
export default function getClientId() { export default function getClientId() {
return isDev() ? discord.client_id_dev : discord.client_id; return isDev() ? discord.client_id_dev : discord.client_id;
+2 -2
View File
@@ -1,5 +1,5 @@
import jsxToSvg from './jsxToSvg.js'; import jsxToSvg from './jsxToSvg';
import svgToPng from './svgToPng.js'; import svgToPng from './svgToPng';
export default async function jsxToPng(jsx: JSX.Element) { export default async function jsxToPng(jsx: JSX.Element) {
const svg = await jsxToSvg(jsx); const svg = await jsxToSvg(jsx);
+2 -2
View File
@@ -1,5 +1,5 @@
import { Resvg } from "@resvg/resvg-js"; import { Resvg } from '@resvg/resvg-js';
export default function svgToPng(svg: string) { export default function svgToPng(svg: string) {
return new Resvg(svg).render().asPng() return new Resvg(svg).render().asPng();
} }
+3 -3
View File
@@ -1,8 +1,8 @@
import { EmbedBuilder, TextChannel } from 'discord.js'; import { EmbedBuilder, TextChannel } from 'discord.js';
import discord from '../../discord.json' assert { type: 'json' }; import discord from '../../discord.json' assert { type: 'json' };
import { client } from '../bot.js'; import { client } from '../bot';
import { NEGATIVE_COLOR } from '../constants/colors.js'; import { NEGATIVE_COLOR } from '../constants/colors';
import isDev from '../core/node/isDev.js'; import isDev from '../core/node/isDev';
const PROCESS_ERROR_EVENTS = ['uncaughtException']; const PROCESS_ERROR_EVENTS = ['uncaughtException'];
const CLIENT_ERROR_EVENTS = ['error']; const CLIENT_ERROR_EVENTS = ['error'];
+1 -1
View File
@@ -1,6 +1,6 @@
import { EmbedBuilder, GuildMember, TextChannel } from 'discord.js'; import { EmbedBuilder, GuildMember, TextChannel } from 'discord.js';
import discord from '../../discord.json' assert { type: 'json' }; import discord from '../../discord.json' assert { type: 'json' };
import { ACCENT_COLOR } from '../constants/colors.js'; import { ACCENT_COLOR } from '../constants/colors';
export default async function (member: GuildMember) { export default async function (member: GuildMember) {
if (member.guild.id === discord.sklld_guild_id) { if (member.guild.id === discord.sklld_guild_id) {
@@ -1,5 +1,5 @@
import { AutocompleteInteraction, CacheType } from 'discord.js'; import { AutocompleteInteraction, CacheType } from 'discord.js';
import { commands } from '../index.js'; import { commands } from '..';
export default function handleAutocomplete( export default function handleAutocomplete(
interaction: AutocompleteInteraction<CacheType>, interaction: AutocompleteInteraction<CacheType>,
@@ -1,8 +1,8 @@
import { ButtonInteraction, CacheType } from 'discord.js'; import { ButtonInteraction, CacheType } from 'discord.js';
import { CYCLIC_API } from '../../../constants/cyclic.js'; import { commands } from '..';
import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable.js'; import { CYCLIC_API } from '../../../constants/cyclic';
import throwError from '../../../core/node/throwError.js'; import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable';
import { commands } from '../index.js'; import throwError from '../../../core/node/throwError';
export default async function handleButton( export default async function handleButton(
interaction: ButtonInteraction<CacheType>, interaction: ButtonInteraction<CacheType>,
@@ -5,12 +5,12 @@ import {
CacheType, CacheType,
ChatInputCommandInteraction, ChatInputCommandInteraction,
} from 'discord.js'; } from 'discord.js';
import embedNegative from '../../../core/discord/embedNegative.js'; import { commands } from '..';
import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable.js'; import embedNegative from '../../../core/discord/embedNegative';
import embedWarning from '../../../core/discord/embedWarning.js'; import embedWarning from '../../../core/discord/embedWarning';
import { psa } from '../../../core/discord/psa.js'; import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable';
import { handleError } from '../../error.js'; import { psa } from '../../../core/discord/psa';
import { commands } from '../index.js'; import { handleError } from '../../error';
export default async function handleChatInputCommand( export default async function handleChatInputCommand(
interaction: ChatInputCommandInteraction<CacheType>, interaction: ChatInputCommandInteraction<CacheType>,
+22 -22
View File
@@ -13,28 +13,28 @@ import {
SlashCommandSubcommandsOnlyBuilder, SlashCommandSubcommandsOnlyBuilder,
} from 'discord.js'; } from 'discord.js';
import discord from '../../../discord.json' assert { type: 'json' }; import discord from '../../../discord.json' assert { type: 'json' };
import { debugCommand } from '../../commands/debug.js'; import { debugCommand } from '../../commands/debug';
import { eligibleCommand } from '../../commands/eligible.js'; import { eligibleCommand } from '../../commands/eligible';
import { evolutionCommand } from '../../commands/evolution.js'; import { evolutionCommand } from '../../commands/evolution';
import { fullStatsCommand } from '../../commands/fullStats.js'; import { fullStatsCommand } from '../../commands/fullStats';
import { helpCommand } from '../../commands/help.js'; import { helpCommand } from '../../commands/help';
import { inactiveCommand } from '../../commands/inactive.js'; import { inactiveCommand } from '../../commands/inactive';
import { ownedTanksCommand } from '../../commands/ownedTanks.js'; import { ownedTanksCommand } from '../../commands/ownedTanks';
import { pingCommand } from '../../commands/ping.js'; import { pingCommand } from '../../commands/ping';
import { playerAchievementsCommand } from '../../commands/playerAchievements.js'; import { playerAchievementsCommand } from '../../commands/playerAchievements';
import { playerInfoCommand } from '../../commands/playerInfo.js'; import { playerInfoCommand } from '../../commands/playerInfo';
import { searchClansCommand } from '../../commands/searchClans.js'; import { searchClansCommand } from '../../commands/searchClans';
import { searchPlayersCommand } from '../../commands/searchPlayers.js'; import { searchPlayersCommand } from '../../commands/searchPlayers';
import { searchTanksCommand } from '../../commands/searchTanks.js'; import { searchTanksCommand } from '../../commands/searchTanks';
import { statsCommand } from '../../commands/stats.js'; import { statsCommand } from '../../commands/stats';
import { todayCommand } from '../../commands/today.js'; import { todayCommand } from '../../commands/today';
import { verifyCommand } from '../../commands/verify.js'; import { verifyCommand } from '../../commands/verify';
import { DISCORD_TOKEN } from '../../core/node/arguments.js'; import { DISCORD_TOKEN } from '../../core/node/arguments';
import getClientId from '../../core/node/getClientId.js'; import getClientId from '../../core/node/getClientId';
import isDev from '../../core/node/isDev.js'; import isDev from '../../core/node/isDev';
import handleAutocomplete from './handlers/autocomplete.js'; import handleAutocomplete from './handlers/autocomplete';
import handleButton from './handlers/button.js'; import handleButton from './handlers/button';
import handleChatInputCommand from './handlers/chatInputCommand.js'; import handleChatInputCommand from './handlers/chatInputCommand';
export type InteractionRawReturnable = export type InteractionRawReturnable =
| string | string
+1 -1
View File
@@ -1,5 +1,5 @@
import { Client } from 'discord.js'; import { Client } from 'discord.js';
import isDev from '../core/node/isDev.js'; import isDev from '../core/node/isDev';
export default function ready(client: Client<true>) { export default function ready(client: Client<true>) {
console.log( console.log(
+18 -18
View File
@@ -1,21 +1,21 @@
import * as Graph from '../components/Graph/index.js'; import * as Graph from '../components/Graph';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankName from '../core/blitz/resolveTankName.js'; import resolveTankName from '../core/blitz/resolveTankName';
import { tankopedia } from '../core/blitz/tankopedia.js'; import { tankopedia } from '../core/blitz/tankopedia';
import getPlayerHistories from '../core/blitzstars/getPlayerHistories.js'; import getPlayerHistories from '../core/blitzstars/getPlayerHistories';
import getTankHistories from '../core/blitzstars/getTankHistories.js'; import getTankHistories from '../core/blitzstars/getTankHistories';
import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand.js'; import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand';
import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand.js'; import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { AccountInfo } from '../types/accountInfo.js'; import { AccountInfo } from '../types/accountInfo';
import { Histories } from '../types/histories.js'; import { Histories } from '../types/histories';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
import { StatType } from './fullStats.js'; import { StatType } from './fullStats';
export default async function evolution<Type extends StatType>( export default async function evolution<Type extends StatType>(
type: Type, type: Type,
+20 -20
View File
@@ -1,27 +1,27 @@
import GenericAllStats from '../components/GenericAllStats/index.js'; import GenericAllStats from '../components/GenericAllStats';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import TierWeights, { TierWeightsRecord } from '../components/TierWeights.js'; import TierWeights, { TierWeightsRecord } from '../components/TierWeights';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import calculateWN8 from '../core/blitz/calculateWN8.js'; import calculateWN8 from '../core/blitz/calculateWN8';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankName from '../core/blitz/resolveTankName.js'; import resolveTankName from '../core/blitz/resolveTankName';
import sumStats from '../core/blitz/sumStats.js'; import sumStats from '../core/blitz/sumStats';
import { Tier, tankopedia } from '../core/blitz/tankopedia.js'; import { Tier, tankopedia } from '../core/blitz/tankopedia';
import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats.js'; import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats';
import { tankAverages } from '../core/blitzstars/tankAverages.js'; import { tankAverages } from '../core/blitzstars/tankAverages';
import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand.js'; import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand';
import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand.js'; import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { import {
AccountInfo, AccountInfo,
AllStats, AllStats,
SupplementaryStats, SupplementaryStats,
} from '../types/accountInfo.js'; } from '../types/accountInfo';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
import { PossiblyPromise } from '../types/possiblyPromise.js'; import { PossiblyPromise } from '../types/possiblyPromise';
export type StatType = 'player' | 'tank'; export type StatType = 'player' | 'tank';
+21 -21
View File
@@ -1,28 +1,28 @@
import AllStatsOverview from '../components/AllStatsOverview/index.js'; import AllStatsOverview from '../components/AllStatsOverview';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import { TierWeightsRecord } from '../components/TierWeights.js'; import { TierWeightsRecord } from '../components/TierWeights';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import calculateWN8 from '../core/blitz/calculateWN8.js'; import calculateWN8 from '../core/blitz/calculateWN8';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankName from '../core/blitz/resolveTankName.js'; import resolveTankName from '../core/blitz/resolveTankName';
import sumStats from '../core/blitz/sumStats.js'; import sumStats from '../core/blitz/sumStats';
import { Tier, tankopedia } from '../core/blitz/tankopedia.js'; import { Tier, tankopedia } from '../core/blitz/tankopedia';
import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats.js'; import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats';
import { tankAverages } from '../core/blitzstars/tankAverages.js'; import { tankAverages } from '../core/blitzstars/tankAverages';
import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand.js'; import { ResolvedPeriod } from '../core/discord/resolvePeriodFromCommand';
import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand.js'; import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { theme } from '../stitches.config.js'; import { theme } from '../stitches.config';
import { import {
AccountInfo, AccountInfo,
AllStats, AllStats,
SupplementaryStats, SupplementaryStats,
} from '../types/accountInfo.js'; } from '../types/accountInfo';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
import { PossiblyPromise } from '../types/possiblyPromise.js'; import { PossiblyPromise } from '../types/possiblyPromise';
export type StatType = 'player' | 'tank'; export type StatType = 'player' | 'tank';
+21 -21
View File
@@ -1,24 +1,24 @@
import * as Breakdown from '../components/Breakdown/index.js'; import * as Breakdown from '../components/Breakdown';
import NoData, { NoDataType } from '../components/NoData.js'; import NoData, { NoDataType } from '../components/NoData';
import PoweredBy, { PoweredByType } from '../components/PoweredBy.js'; import PoweredBy, { PoweredByType } from '../components/PoweredBy';
import TitleBar from '../components/TitleBar.js'; import TitleBar from '../components/TitleBar';
import Wrapper from '../components/Wrapper.js'; import Wrapper from '../components/Wrapper';
import { BLITZ_SERVERS } from '../constants/servers.js'; import { BLITZ_SERVERS } from '../constants/servers';
import calculateWN8 from '../core/blitz/calculateWN8.js'; import calculateWN8 from '../core/blitz/calculateWN8';
import getTankStats from '../core/blitz/getTankStats.js'; import getTankStats from '../core/blitz/getTankStats';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse';
import resolveTankName from '../core/blitz/resolveTankName.js'; import resolveTankName from '../core/blitz/resolveTankName';
import sumStats from '../core/blitz/sumStats.js'; import sumStats from '../core/blitz/sumStats';
import { tankopedia } from '../core/blitz/tankopedia.js'; import { tankopedia } from '../core/blitz/tankopedia';
import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats.js'; import getDiffedTankStats from '../core/blitzstars/getDiffedTankStats';
import getPeriodNow from '../core/blitzstars/getPeriodNow.js'; import getPeriodNow from '../core/blitzstars/getPeriodNow';
import getTimeDaysAgo from '../core/blitzstars/getTimeDaysAgo.js'; import getTimeDaysAgo from '../core/blitzstars/getTimeDaysAgo';
import { tankAverages } from '../core/blitzstars/tankAverages.js'; import { tankAverages } from '../core/blitzstars/tankAverages';
import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand.js'; import { ResolvedPlayer } from '../core/discord/resolvePlayerFromCommand';
import { WARGAMING_APPLICATION_ID } from '../core/node/arguments.js'; import { WARGAMING_APPLICATION_ID } from '../core/node/arguments';
import { AccountInfo, AllStats } from '../types/accountInfo.js'; import { AccountInfo, AllStats } from '../types/accountInfo';
import { PlayerClanData } from '../types/playerClanData.js'; import { PlayerClanData } from '../types/playerClanData';
import { PossiblyPromise } from '../types/possiblyPromise.js'; import { PossiblyPromise } from '../types/possiblyPromise';
export default async function today( export default async function today(
{ server, id }: ResolvedPlayer, { server, id }: ResolvedPlayer,
+4 -4
View File
@@ -1,7 +1,7 @@
import resolvePeriodFromRequest from '../core/express/resolvePeriodFromRequest.js'; import resolvePeriodFromRequest from '../core/express/resolvePeriodFromRequest';
import resolvePlayerFromRequest from '../core/express/resolvePlayerFromRequest.js'; import resolvePlayerFromRequest from '../core/express/resolvePlayerFromRequest';
import stats, { StatType } from '../renderers/stats.js'; import stats, { StatType } from '../renderers/stats';
import { RouteRegistry } from '../server.js'; import { RouteRegistry } from '../server';
export const statsRoute: RouteRegistry = { export const statsRoute: RouteRegistry = {
route: '/stats/:type/:period', route: '/stats/:type/:period',
Loaded 100 of 107 files, more files were not shown because too many files have changed in this diff. Show more