UNPKG

rivalsjs

Version:

<h1 align="center"> Rivals JS </h1>

569 lines (553 loc) 16.1 kB
import { Client } from '../index.js'; import * as neverthrow from 'neverthrow'; import { Result } from 'neverthrow'; import 'axios'; type AchievementItem = { name: string; mission: string; points: string; icon: string; rarity: string; category: string; }; type AllAchievementsResponse = { totalAchievements: number; achievements: AchievementItem[]; }; type AchievementResponse = AchievementItem; type BattlepassResponse = { season: number; seasonName: string; items: { name: string; image: string; cost: string; isLuxury: boolean; }[]; }; type Hero = { id: string; name: string; realName: string; imageUrl: string; role: string; attackType: string; team: string[]; difficulty: string; bio: string; transformations: { id: string; name: string; icon: string; health: string | null; movementSpeed: string | null; }[]; costumes: { id: string; name: string; icon: string; quality: string; description: string; appearance: string; }[]; abilities: { id: number; icon: string; name: string; isCollab: boolean; description: string; additionalFields: { [key: string]: string | number | boolean | null; }; transformationId: string; }[]; }; type HeroLeaderboardEntry = { info: { name: string; icon: { playerIconId: string; playerIcon: string; }; rankSeason: { rankGameId: number; level: number; rankScore: string; maxLevel: number; maxRankScore: string; updateTime: number; winCount: number; protectScore: number; diffScore: string; }; loginOs: string; }; playerUid: number; matches: number; wins: number; kills: number; deaths: number; assists: number; playTime: string; totalHeroDamage: string; totalDamageTaken: string; totalHeroHeal: string; mvps: number; svps: number; }; type HeroLeaderboardResponse = HeroLeaderboardEntry[]; type AllMapsResponse = { totalMaps: number; maps: { id: number; name: string; fullName: string; location: string; description: string; gameMode: string; isCompetitive: boolean; subMap: { id: number | null; name: string | null; thumbnail: string | null; }; video: string | null; images: string[]; }[]; }; type FindPlayerResponse = { name: string; uid: string; }; type UpdatePlayerResponse = { success: boolean; message: string; status: number; }; type OverallStatsEntry = { totalMatches: number; totalWins: number; totalAssists: number; totalDeaths: number; totalKills: number; totalTimePlayed: string; totalTimePlayedRaw: number; totalMvp: number; totalSvp: number; }; type PlayerHeroStatEntry = { heroId: number; heroName: string; heroThumbnail: string; matches: number; wins: number; mvp: number; svp: number; kills: number; deaths: number; assists: number; playTime: number; damage: number; heal: number; damageTaken: number; mainAttack: { total: number; hits: number; }; }; type PlayerResponse = { uid: number; name: string; updates: { infoUpdateTime: string; lastHistoryUpdate: string; lastInsertedMatch: string; lastUpdateRequest: string; }; player: { uid: number; level: string; name: string; icon: { playerIconId: string; playerIcon: string; }; rank: { rank: string; image: string; color: string; }; team: { clubTeamId: string; clubTeamMiniName: string; clubTeamType: string; }; info: { completedAchievements: string; loginOs: string; rankGameSeason: { [key: string]: { rankGameId: number; level: number; rankScore: number; maxLevel: number; maxRankScore: number; updateTime: number; winCount: number; protectScore: number; diffScore: number; }; }; }; }; isPrivate: boolean; overallStats: { totalMatches: number; totalWins: number; unranked: OverallStatsEntry; ranked: OverallStatsEntry; }; matchHistory: { matchUid: string; matchId: number; mapThumbnail: string; duration: number; season: number; winnerSide: number; mvpUid: number; svpUid: number; matchTimeStamp: number; playModeId: number; gameModeId: number; scoreInfo: { [key: string]: number; }; playerPerformance: { playerUid: number; heroId: number; heroName: string; heroType: string; kills: number; deaths: number; assists: number; isWin: { score: number; isWin: boolean; }; disconnected: boolean; camp: number; scoreChange: number; level: number; newLevel: number; newScore: number; }; }[]; rankHistory: { matchTimeStamp: number; levelProgression: { from: number; to: number; }; scoreProgression: { addScore: number; totalScore: number; }; }[]; heroMatchups: { heroId: number; heroName: string; heroClass: string; heroThumbnail: string; matches: number; wins: number; winRate: string; }[]; teamMates: { playerInfo: { nickName: string; playerIcon: string; playerUid: number; }; matches: number; wins: number; winRate: string; }[]; heroesRanked: PlayerHeroStatEntry[]; heroesUnranked: PlayerHeroStatEntry[]; maps: { mapId: number; mapThumbnail: string; matches: number; wins: number; kills: number; deaths: number; assists: number; playTime: number; }[]; }; type PlayerMatchHistoryEntry = { matchMapId: number; mapThumbnail: string; matchPlayDuration: number; matchSeason: number; matchUid: string; matchWinnerSide: number; mvpUid: number; svpUid: number; scoreInfo: { [key: string]: number; }; matchTimeStamp: number; playModeId: number; gameModeId: number; matchPlayer: { assists: number; kills: number; deaths: number; isWin: { score: number; isWin: boolean; }; disconnected: boolean; playerUid: number; camp: number | null; scoreInfo: { addScore: number; level: number; newLevel: number; newScore: number; }; playerHero: { heroId: number; heroName: string; heroType: string; kills: number; deaths: number; assists: number; playTime: number; totalHeroDamage: number; totalDamageTaken: number; totalHeroHeal: number; }; }; }; type HealthCheckResponse = { error: boolean; message: string; status: number; serverTime: string; serverResponseTime: string; }; /** * Retrieves a list of achievements. You can apply pagination. * * @export * @async * @param {Client} client * @param {number} [page=1] * @param {number} [perPage=10] * @returns {{Promise<Result<AllAchievementsResponse, string>>}} */ declare function getAllAchievements(client: Client, page?: number, perPage?: number): Promise<Result<AllAchievementsResponse, string>>; /** * Allows searching for a specific achievement either by its unique ID or its name. * * @export * @async * @param {Client} client * @param {string} name * @returns {Promise<Result<AchievementResponse, string>>} */ declare function getAchievement(client: Client, name: string): Promise<Result<AchievementResponse, string>>; /** * Retrieves the battlepass data for a given season, including season details * and the list of items available for the selected season. * * @export * @async * @param {Client} client * @param {?number} [season] Defaults to the current season if not provided. * @returns {Promise<Result<BattlepassResponse, string>>} */ declare function getBattlepass(client: Client, season?: number): Promise<Result<BattlepassResponse, string>>; /** * Retrieves a list of all available heroes with their details. * * @export * @async * @param {Client} client * @returns {Promise<Result<Hero[], string>>} */ declare function getAllHeroes(client: Client): Promise<Result<Hero[], string>>; /** * Detailed information about a hero. You can either provide the hero's name or ID to retrieve their stats, abilities, and other relevant details. * * @export * @async * @param {Client} client * @param {string} name * @returns {Promise<Result<Hero, string>>} */ declare function getHero(client: Client, name: string): Promise<Result<Hero, string>>; /** * Retrieves the leaderboard for a specific hero based on their name or ID. * The leaderboard data is fetched from an external API and processed for easy consumption. * * @export * @async * @param {Client} client * @param {string} name * @returns {Promise<Result<HeroLeaderboardResponse, string>>} */ declare function getHeroLeaderboard(client: Client, name: string): Promise<Result<HeroLeaderboardResponse, string>>; /** * Retrieves all available maps with optional pagination to control the number of results per page. * * @export * @async * @param {Client} client * @param {number} [page=1] * @param {number} [perPage=10] * @returns {Promise<Result<AllMapsResponse, string>>} */ declare function getAllMaps(client: Client, page?: number, perPage?: number): Promise<Result<AllMapsResponse, string>>; /** * Retrieve match data for a specific match identified by the matchId. It processes the match details and player stats. * * @export * @async * @param {Client} client * @param {string} matchId * @returns {unknown} */ declare function getMatch(client: Client, matchId: string): Promise<neverthrow.Result<{ matchUid: string; gameMode: { gameModeId: number; gameModeName: string; }; replayId: string; mvpUid: number; mvpHeroId: number; svpUid: number; svpHeroId: number; dynamicFields: { banPickInfo: { battleSide: number; isOneSide: boolean; confId: number; roundIdx: number; effectBattleSide: number; votes: any; heroId: number; isPick: number; voteType: number; }[]; }; matchPlayers: { playerUid: number; nickName: string; playerIcon: number; camp: number; curHeroId: number; curHeroIcon: string; isWin: number; kills: number; deaths: number; assists: number; totalHeroDamage: number; totalHeroHeal: number; totalDamageTaken: number; badges?: { name: string; id: number; count: number; image: string | null; }[]; playerHeroes: { heroId: number; playTime: number; kills: number; deaths: number; assists: number; sessionHitRate: number; heroIcon: string; }[]; }[]; }, string>>; /** * Retrieves player uid for a specific player identified by their username. It returns basic player information such as name and unique identifier (UID). * * @export * @async * @param {Client} client * @param {string} username * @returns {Promise<Result<FindPlayerResponse, string>>} */ declare function searchPlayer(client: Client, username: string): Promise<Result<FindPlayerResponse, string>>; /** * Player data for a specific player identified by uid or username. It processes player statistics and related data, such as match history, rank history, heroes, and maps. * * IMPORTANT: Searching player stats by username is a new feature and is not always reliable. Searching player stats by player uid is more stable. * * @export * @async * @param {Client} client * @param {string} player This can be either a player uid or username. * @param {?number} [season] * @returns {Promise<Result<PlayerResponse, string>>} */ declare function getPlayer(client: Client, player: string, season?: number): Promise<Result<PlayerResponse, string>>; /** * Triggers an update of player data identified by the uid or username. It performs the necessary updates and returns a success or failure response. * * IMPORTANT * The update player endpoint is a QUEUE & TIME & USER sensitive/locked endpoint at a set time of 30 minutes what this means is it can only be used every 30 minutes on 1 specific player. * For more information, please refer to the [API documentation](https://docs.marvelrivalsapi.com/endpoints/player-stats/update-player). * * @export * @async * @param {Client} client * @param {string} player * @returns {Promise<Result<UpdatePlayerResponse, string>>} */ declare function updatePlayer(client: Client, player: string): Promise<Result<UpdatePlayerResponse, string>>; /** * Retrieves the match history of a player based on their unique identifier (UID) or username. It allows filtering by season, skip value, and game mode. * * @export * @async * @param {Client} client * @param {string} uid Player unique identifier (UID) or username. * @param {?number} [season] The season to retrieve match history for. Defaults to current season * @param {?number} [skip] The number of matches to skip (pagination). Defaults to 20. * @param {?number} [gameMode] The game mode to filter matches by. Defaults to 0. * @param {?number} [timestamp] Filter matches by timestamp. Only includes matches after the given timestamp. * @returns {Promise<Result<PlayerMatchHistoryEntry[], string>>} */ declare function getPlayerMatchHistory(client: Client, uid: string, season?: number, skip?: number, gameMode?: number, timestamp?: number): Promise<Result<PlayerMatchHistoryEntry[], string>>; /** * API health check. * * @export * @async * @param {Client} client * @returns {Promise<Result<HealthCheckResponse, string>>} */ declare function getHealthCheck(client: Client): Promise<Result<HealthCheckResponse, string>>; declare const routes: { healthCheck(): string; battlepass(season?: number): string; allAchievements(page?: number, perPage?: number): string; achievement(name: string): string; allMaps(page?: number, perPage?: number): string; searchPlayer(username: string): string; player(player: string, season?: number): string; updatePlayer(player: string): string; getPlayerMatchHistory(uid: string, season?: number, skip?: number, gameMode?: number, timestamp?: number): string; allHeroes(): string; hero(name: string): string; heroLeaderboard(name: string): string; singleMatch(matchId: string): string; }; export { getAchievement, getAllAchievements, getAllHeroes, getAllMaps, getBattlepass, getHealthCheck, getHero, getHeroLeaderboard, getMatch, getPlayer, getPlayerMatchHistory, routes, searchPlayer, updatePlayer };