feat: add type to Jax Match Endpoint

This commit is contained in:
Valentin Kaelin 2020-10-07 19:08:16 +02:00
parent b565a0bc55
commit 7d74309d1b

View file

@ -2,6 +2,213 @@ import { RiotRateLimiter } from '@fightmegg/riot-rate-limiter'
import { JaxConfig } from '../../JaxConfig' import { JaxConfig } from '../../JaxConfig'
import JaxRequest from '../JaxRequest' import JaxRequest from '../JaxRequest'
export interface MatchDto {
gameId: number,
participantIdentities: ParticipantIdentityDto[],
queueId: number,
gameType: string,
gameDuration: number,
teams: TeamStatsDto[],
platformId: string
gameCreation: number,
seasonId: number,
gameVersion: string,
mapId: number,
gameMode: string,
participants: ParticipantDto[],
}
export interface ParticipantIdentityDto {
participantId: number,
player: PlayerDto
}
export interface PlayerDto {
profileIcon: number,
accountId: string,
matchHistoryUri: string,
currentAccountId: string,
currentPlatformId: string,
summonerName: string,
summonerId: string,
platformId: string,
}
export interface TeamStatsDto {
towerKills: number,
riftHeraldKills: number,
firstBlood: boolean,
inhibitorKills: number,
bans: TeamBansDto[],
firstBaron: boolean,
firstDragon: boolean,
dominionVictoryScore: number,
dragonKills: number,
baronKills: number,
firstInhibitor: boolean
firstTower: boolean
vilemawKills: number,
firstRiftHerald: boolean
teamId: number, // 100 for blue side. 200 for red side.
win: string
}
export interface TeamBansDto {
championId: number,
pickTurn: number,
}
export interface ParticipantDto {
participantId: number,
championId: number,
runes: RuneDto[],
stats: ParticipantStatsDto,
teamId: number,
timeline: ParticipantTimelineDto,
spell1Id: number,
spell2Id: number,
highestAchievedSeasonTier?:
'CHALLENGER' | 'MASTER' | 'DIAMOND' | 'PLATINUM' | 'GOLD' | 'SILVER' | 'BRONZE' | 'UNRANKED',
masteries: MasteryDto[]
}
export interface RuneDto {
runeId: number,
rank: number,
}
export interface ParticipantStatsDto {
item0: number,
item2: number,
totalUnitsHealed: number,
item1: number,
largestMultiKill: number,
goldEarned: number,
firstInhibitorKill: boolean,
physicalDamageTaken: number,
nodeNeutralizeAssist: number,
totalPlayerScore: number,
champLevel: number,
damageDealtToObjectives: number,
totalDamageTaken: number,
neutralMinionsKilled: number,
deaths: number,
tripleKills: number,
magicDamageDealtToChampions: number,
wardsKilled: number,
pentaKills: number,
damageSelfMitigated: number,
largestCriticalStrike: number,
nodeNeutralize: number,
totalTimeCrowdControlDealt: number,
firstTowerKill: boolean
magicDamageDealt: number,
totalScoreRank: number,
nodeCapture: number,
wardsPlaced: number,
totalDamageDealt: number,
timeCCingOthers: number,
magicalDamageTaken: number,
largestKillingSpree: number,
totalDamageDealtToChampions: number,
physicalDamageDealtToChampions: number,
neutralMinionsKilledTeamJungle: number,
totalMinionsKilled: number,
firstInhibitorAssist: boolean
visionWardsBoughtInGame: number,
objectivePlayerScore: number,
kills: number,
firstTowerAssist: boolean
combatPlayerScore: number,
inhibitorKills: number,
turretKills: number,
participantId: number,
trueDamageTaken: number,
firstBloodAssist: boolean
nodeCaptureAssist: number,
assists: number,
teamObjective: number,
altarsNeutralized: number,
goldSpent: number,
damageDealtToTurrets: number,
altarsCaptured: number,
win: boolean,
totalHeal: number,
unrealKills: number,
visionScore: number,
physicalDamageDealt: number,
firstBloodKill: boolean,
longestTimeSpentLiving: number,
killingSprees: number,
sightWardsBoughtInGame: number,
trueDamageDealtToChampions: number,
neutralMinionsKilledEnemyJungle: number,
doubleKills: number,
trueDamageDealt: number,
quadraKills: number,
item4: number,
item3: number,
item6: number,
item5: number,
playerScore0: number,
playerScore1: number,
playerScore2: number,
playerScore3: number,
playerScore4: number,
playerScore5: number,
playerScore6: number,
playerScore7: number,
playerScore8: number,
playerScore9: number,
perk0: number,
perk0Var1: number,
perk0Var2: number,
perk0Var3: number,
perk1: number,
perk1Var1: number,
perk1Var2: number,
perk1Var3: number,
perk2: number,
perk2Var1: number,
perk2Var2: number,
perk2Var3: number,
perk3: number,
perk3Var1: number,
perk3Var2: number,
perk3Var3: number,
perk4: number,
perk4Var1: number,
perk4Var2: number,
perk4Var3: number,
perk5: number,
perk5Var1: number,
perk5Var2: number,
perk5Var3: number,
perkPrimaryStyle: number,
perkSubStyle: number,
statPerk0: number,
statPerk1: number,
statPerk2: number,
}
export interface ParticipantTimelineDto {
participantId: number,
csDiffPerMinDeltas: { [index: string]: number },
damageTakenPerMinDeltas: { [index: string]: number },
role: 'DUO' | 'NONE' | 'SOLO' | 'DUO_CARRY' | 'DUO_SUPPORT',
damageTakenDiffPerMinDeltas: { [index: string]: number },
xpPerMinDeltas: { [index: string]: number },
xpDiffPerMinDeltas: { [index: string]: number },
lane: 'MID' | 'MIDDLE' | 'TOP' | 'JUNGLE' | 'BOT' | 'BOTTOM',
creepsPerMinDeltas: { [index: string]: number },
goldPerMinDeltas: { [index: string]: number },
}
export interface MasteryDto {
rank: number,
masteryId: number,
}
export default class MatchEndpoint { export default class MatchEndpoint {
private config: JaxConfig private config: JaxConfig
private limiter: RiotRateLimiter private limiter: RiotRateLimiter
@ -13,7 +220,7 @@ export default class MatchEndpoint {
this.get = this.get.bind(this) this.get = this.get.bind(this)
} }
public get (matchID: number, region: string) { public get (matchID: number, region: string): Promise<MatchDto> {
return new JaxRequest( return new JaxRequest(
region, region,
this.config, this.config,