mrivals
Version:
Wrapper/Scrapper for Marvel Rival stats.
215 lines (211 loc) • 5.02 kB
TypeScript
type TrackerPlatformInfo = {
platformSlug: string;
platformUserId: string;
platformUserHandle: string;
platformUserIdentifier: string;
avatarUrl: string;
};
type TrackerUserInfo = {
userId: number;
isPremium: boolean;
isVerified: boolean;
isInfluencer: boolean;
isPartner: boolean;
countryCode: string | null;
customAvatarUrl: string | null;
socialAccounts: any[];
pageviews: number;
};
type TrackerMetadata = {
lastUpdated: {
value: string;
displayValue: string;
};
level: number;
currentSeason: number;
defaultSeason: number;
gamemodes: Array<{
id: string;
name: string;
}>;
seasons: Array<{
id: number;
name: string;
shortName: string;
}>;
};
type SegmentStat = {
rank: number | null;
displayName: string;
category: string;
value: number | string | SegmentStat[];
displayValue: string;
displayType: string;
metadata: {
unit?: string;
iconUrl?: string;
tierName?: string;
tierShortName?: string;
color?: string;
season?: number;
seasonName?: string;
seasonShortName?: string;
};
};
type SegmentGameStats = {
[key: string]: SegmentStat;
};
type Segments = {
type: 'overview' | 'hero' | 'hero-role' | 'ranked-peaks';
attributes: {
season?: number;
mode?: string;
heroId?: number;
roleId?: string;
};
metadata?: {
name?: string;
imageUrl?: string;
roleName?: string;
color?: string;
};
stats: SegmentGameStats;
expiryDate: string;
};
type TrackerResponse = {
data: {
platformInfo: TrackerPlatformInfo;
userInfo: TrackerUserInfo;
metadata: TrackerMetadata;
segments: Segments[];
expiryDate: string;
};
errors?: {
message: string;
}[];
};
type BaseOptions = {
raw?: boolean;
};
type FetchUserOptions = {
flaresolverrUrl?: string;
useCurl?: boolean;
};
type RoleType = 'Strategist' | 'Duelist' | 'Vanguard';
type HeroStats = {
timePlayed: number;
timePlayedWon: number;
matchesPlayed: number;
matchesWon: number;
matchesWinPct: number;
kills: number;
deaths: number;
assists: number;
kdRatio: number;
kdaRatio: number;
totalHeroDamage: number;
totalHeroDamagePerMinute: number;
totalHeroHeal: number;
totalHeroHealPerMinute: number;
totalDamageTaken: number;
totalDamageTakenPerMinute: number;
lastKills: number;
headKills: number;
soloKills: number;
survivalKills: number;
continueKills: number;
continueKills3: number;
continueKills4: number;
continueKills5: number;
continueKills6: number;
mainAttacks: number;
mainAttackHits: number;
shieldHits: number;
summonerHits: number;
chaosHits: number;
totalMvp: number;
totalSvp: number;
};
type OverviewStats = HeroStats & {
featureNormalData1?: number;
featureNormalData2?: number;
featureNormalData3?: number;
featureCriticalRate1CritHits?: number;
featureCriticalRate1Hits?: number;
featureHitRate1UseCount?: number;
featureHitRate1HeroHits?: number;
featureHitRate1EnemyHits?: number;
featureHitRate1ShieldHits?: number;
featureHitRate1SummonerHits?: number;
};
type RoleStats = {
[K in RoleType]: HeroStats;
};
type HeroesStats = {
[hero: string]: OverviewStats;
};
type GameMode = {
id: string;
name: string;
};
type Season = {
id: number;
name: string;
shortName: string;
};
type MetadataInfo = {
lastUpdated: {
value: string;
displayValue: string;
};
level: number;
currentSeason: number;
defaultSeason: number;
gamemodes: GameMode[];
seasons: Season[];
};
type UserInfo = {
platform: string;
uuid: string;
name: string;
userid: string;
avatar: string;
pageViews: number;
rank: string;
peakRank: string;
metadata?: MetadataInfo;
};
declare class API {
username: string;
_raw: TrackerResponse;
constructor(username: string);
static fetchUser(username: string, options?: FetchUserOptions): Promise<API>;
overview(options?: BaseOptions): OverviewStats;
heroes(): HeroesStats;
roles(): RoleStats;
peakRank(): {
peakTiers: {
displayName: string;
tierName: string;
tierShortName: string;
tierIcon: string;
tierColor: string;
season: string;
seasonName: string;
mmr: number;
}[];
lifetimePeakRanked: {
displayName: string;
tierName: string;
tierShortName: string;
tierIcon: string;
tierColor: string;
season: string;
seasonName: string;
mmr: number;
};
};
info(): UserInfo;
raw(): TrackerResponse;
}
export { API };