Files
blitzkit/packages/core/src/blitz/getAccountInfo.ts
T

96 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-10-12 15:05:58 +00:00
import { BlitzStats } from "../statistics";
import { FetchBlitzParams, fetchBlitz } from "./fetchBlitz";
import { normalizeIds } from "./normalizeIds";
import { Region } from "./regions";
2023-10-12 13:00:33 -05:00
2024-03-24 22:06:48 -05:00
export interface SupplementaryStats {
2023-10-12 13:00:33 -05:00
WN8?: number;
tier?: number;
}
export interface ClanStats {
spotted: number;
max_frags_tank_id: number;
hits: number;
frags: number;
max_xp: number;
max_xp_tank_id: number;
wins: number;
losses: number;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
max_frags: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
}
2024-03-20 16:58:43 -05:00
export interface RatingStats {
2024-03-19 18:21:56 -05:00
spotted: number;
calibration_battles_left: number;
hits: number;
frags: number;
recalibration_start_time: number;
mm_rating: number;
wins: number;
losses: number;
is_recalibration: boolean;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
}
2024-05-01 17:20:08 -05:00
export interface IndividualAccountInfo {
2023-10-12 13:00:33 -05:00
account_id: number;
created_at: number;
updated_at: number;
private: null;
last_battle_time: number;
nickname: string;
statistics: {
2024-08-10 13:29:10 -05:00
all: BlitzStats;
2023-10-12 13:00:33 -05:00
clan: ClanStats;
2024-03-19 18:21:56 -05:00
rating?: RatingStats;
2023-10-12 13:00:33 -05:00
frags: null | number;
};
}
export interface AccountInfo {
[accountId: number]: IndividualAccountInfo;
}
export async function getAccountInfo<
Ids extends number | number[],
ReturnType = Ids extends number
? IndividualAccountInfo
: IndividualAccountInfo[],
2024-04-28 19:16:08 -05:00
>(
region: Region,
ids: Ids,
extra: string[] = [],
2025-10-12 15:05:58 +00:00
params: FetchBlitzParams = {}
2024-04-28 19:16:08 -05:00
) {
2025-10-12 15:05:58 +00:00
const object = await fetchBlitz<AccountInfo>(region, "account/info", {
2024-04-15 13:19:25 -05:00
account_id: normalizeIds(ids),
2025-10-12 15:05:58 +00:00
extra: extra.length === 0 ? undefined : extra.join(","),
2024-04-28 19:16:08 -05:00
...params,
2024-04-15 13:19:25 -05:00
});
2023-10-12 13:00:33 -05:00
2025-10-12 15:05:58 +00:00
if (typeof ids === "number") {
2023-10-12 13:00:33 -05:00
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}