fix: logsin

This commit is contained in:
TrèsAbhi committed 2024-09-15 16:20:11 -05:00
1 parent 8670e5f9a7
commit 85491c7f22
16 files changed
+47 -38

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
import { ShellDefinition, ShellType } from '@blitzkit/core';
import { type ShellDefinition, ShellType } from '@blitzkit/core';
export function canSplash(type: ShellDefinition['type']): type is ShellType.HE {
return type === ShellType.HE;
+2 -2
View File
@@ -2,6 +2,6 @@ import { assertSecret } from './assertSecret';
export function asset(path: string) {
return `https://raw.githubusercontent.com/${assertSecret(
process.env.PUBLIC_ASSET_REPO,
)}/${assertSecret(process.env.PUBLIC_ASSET_BRANCH)}/${path}`;
import.meta.env.PUBLIC_ASSET_REPO,
)}/${assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH)}/${path}`;
}
+1 -1
View File
@@ -38,7 +38,7 @@ export * from './gameDefinitions';
// export * from './sum';
export * from './superCompress';
export * from './superDecompress';
// export * from './tankDefinitions';
export * from './tankDefinitions';
// export * from './tankIcon';
// export * from './tankNames';
// export * from './unionBoundingBox';
+1 -1
View File
@@ -1,4 +1,4 @@
import { context } from '@blitzkit/core';
import { context } from './context';
export function withCORSProxy(url: string) {
return context === 'website'
-1
View File
@@ -1 +0,0 @@
export * from './tankAverages';
@@ -1,105 +0,0 @@
import { BlitzStats, tankDefinitions } from '@blitzkit/core';
import { context } from '../blitzkit/context';
interface SpecialStats {
winrate: number;
damageRatio: number;
kdr: number;
damagePerBattle: number;
killsPerBattle: number;
hitsPerBattle: number;
spotsPerBattle: number;
wpm: number;
dpm: number;
kpm: number;
hitRate: number;
survivalRate: number;
}
export type Percentiles = [
number,
number,
number,
number,
number,
number,
number,
number,
number,
];
export interface SpecialPercentiles {
winRate: Percentiles;
damageRatio: Percentiles;
kdr: Percentiles;
damagePerBattle: Percentiles;
killsPerBattle: Percentiles;
hitsPerBattle: Percentiles;
spotsPerBattle: Percentiles;
wpm: Percentiles;
dpm: Percentiles;
kpm: Percentiles;
hitRate: Percentiles;
survivalRate: Percentiles;
}
export interface MeanSd {
winrateMean: number;
winrateSd: number;
hitRateMean: number;
hitRateSd: number;
survivalRateMean: number;
survivalRateSd: number;
damageRatioMean: number;
damageRatioSd: number;
kdrMean: number;
kdrSd: number;
dpbMean: number;
dpbSd: number;
kpbMean: number;
kpbSd: number;
hpbMean: number;
hpbSd: number;
spbMean: number;
spbSd: number;
}
export interface IndividualTankAverage {
_id: number;
battle_life_time: number;
total_battle_life_time: number;
number_of_players: number;
tank_id: number;
all: BlitzStats;
special: SpecialStats;
percentiles: SpecialPercentiles;
percentiles_player_count: number;
meanSd: MeanSd;
shotEff: number;
last_update: number;
}
tankDefinitions;
export type BlitzStarsTankAverages = Record<number, IndividualTankAverage>;
export const blitzStarsTankAverages = fetch(
context === 'website'
? '/api/tank-averages'
: 'https://www.blitzstars.com/api/tankaverages.json',
)
.then((response) => response.json())
.then((json) => {
if (context === 'server') {
const partialTankAverages: BlitzStarsTankAverages = {};
(json as IndividualTankAverage[]).forEach((individualTankAverage) => {
partialTankAverages[individualTankAverage.tank_id] =
individualTankAverage;
});
return partialTankAverages;
} else {
return json as BlitzStarsTankAverages;
}
});
+1 -1
View File
@@ -6,6 +6,6 @@ export * from './imgur';
// export * from './math';
export * from './patreon';
// export * from './protobuf';
// export * from './statistics';
export * from './statistics';
// export * from './streams';
// export * from './types';
+2 -2
View File
@@ -3,8 +3,8 @@ import { assertSecret } from '../blitzkit/assertSecret';
export function patreonLoginUrl() {
const params = new URLSearchParams({
response_type: 'code',
client_id: assertSecret(process.env.PUBLIC_PATREON_CLIENT_ID),
redirect_uri: assertSecret(process.env.PUBLIC_PATREON_REDIRECT_URI),
client_id: assertSecret(import.meta.env.PUBLIC_PATREON_CLIENT_ID),
redirect_uri: assertSecret(import.meta.env.PUBLIC_PATREON_REDIRECT_URI),
scope: 'identity',
});
@@ -1,79 +0,0 @@
import { SupplementaryStats } from '../blitz/getAccountInfo';
import { tankDefinitions, TreeType } from '../blitzkit/tankDefinitions';
import { blitzStarsTankAverages } from '../blitzstars/tankAverages';
import { calculateWN8 } from './calculateWN8';
import { BlitzStats } from './compositeStats';
import { sumAllStats } from './sumAllStats';
export interface StatFilters {
nation?: string;
tier?: number;
tankType?: string;
treeType?: TreeType;
tank?: number;
}
export async function filterStats(
{ diff, order }: DiffedTankStats,
filters: StatFilters,
) {
// tank, if provided, takes priority over all other filters
if (filters.tank) filters = { tank: filters.tank };
const awaitedTankDefinitions = await tankDefinitions;
const awaitedTankAverages = await blitzStarsTankAverages;
const filteredOrder = order.filter((id) => {
const entry = awaitedTankDefinitions[id];
return (
entry &&
(filters.nation === undefined || entry.nation === filters.nation) &&
(filters.tier === undefined || entry.tier === filters.tier) &&
(filters.tankType === undefined || entry.class === filters.tankType) &&
(filters.treeType === undefined ||
(filters.treeType === 'collector' && entry.treeType === 'collector') ||
(filters.treeType === 'premium' && entry.treeType === 'premium') ||
(filters.treeType === 'researchable' &&
entry.treeType === 'researchable')) &&
(filters.tank === undefined || entry.id === filters.tank)
);
});
const stats = sumAllStats(filteredOrder.map((id) => diff[id]));
const battlesOfTanksWithAverages = filteredOrder.reduce<number>(
(accumulator, id) =>
awaitedTankAverages[id] ? accumulator + diff[id].battles : accumulator,
0,
);
const battlesOfTanksWithTankDefinition = filteredOrder.reduce<number>(
(accumulator, id) =>
awaitedTankDefinitions[id] ? accumulator + diff[id].battles : accumulator,
0,
);
const supplementary = {
WN8:
filteredOrder.reduce<number>(
(accumulator, id) =>
awaitedTankAverages[id]
? accumulator +
calculateWN8(awaitedTankAverages[id].all, diff[id]) *
diff[id].battles
: accumulator,
0,
) / battlesOfTanksWithAverages,
tier:
filteredOrder.reduce<number>(
(accumulator, id) =>
awaitedTankDefinitions[id]
? accumulator + awaitedTankDefinitions[id]!.tier * diff[id].battles
: accumulator,
0,
) / battlesOfTanksWithTankDefinition,
} satisfies SupplementaryStats;
return { stats, supplementary, filteredOrder };
}
export interface DiffedTankStats {
diff: Record<number, BlitzStats>;
order: number[];
}
-1
View File
@@ -2,7 +2,6 @@ export * from './calculateWN8';
export * from './compositeStats';
export * from './deltaBkrlBlitzStats';
export * from './deltaTankStats';
export * from './filterStats';
export * from './getBkniPercentile';
export * from './getTierWeights';
export * from './getWN8Percentile';