UNPKG

@fightmegg/riot-rate-limiter

Version:
334 lines (333 loc) 12.5 kB
import Bottleneck from "bottleneck"; import { RequestInfo, RequestInit } from "node-fetch"; export interface ConstructorParams { debug?: boolean; redis?: Bottleneck.RedisConnectionOptions; concurrency?: number; retryAfterDefault?: number; retryCount?: number; datastore?: "local" | "ioredis"; } export interface ExecuteParameters { url: RequestInfo; options: RequestInit; } export interface ExecuteRequestParameters { req: ExecuteParameters; region: PlatformId; method: string; } export declare enum PlatformId { EUW1 = "euw1", EUNE1 = "eun1", NA1 = "na1", LA1 = "la1", LA2 = "la2", ME1 = "me1", KR = "kr", JP1 = "jp1", BR1 = "br1", OC1 = "oc1", RU = "ru", TR1 = "tr1", EUROPE = "europe", ASIA = "asia", SEA = "sea", AMERICAS = "americas", AP = "ap", BR = "br", EU = "eu", NA = "na", LATAM = "latam", PH2 = "ph2", SG2 = "sg2", TH2 = "th2", TW2 = "tw2", VN2 = "vn2", ESPORTS = "esports", APAC = "apac" } export declare enum LimitType { APPLICATION = "application", METHOD = "method", SERVICE = "service" } export interface RateLimits { appLimits: string; appCounts: string; methodLimits: string; methodCounts: string; limitType: LimitType | null; retryAfter: number | null; } export declare const HOST = ":platformId.api.riotgames.com"; export interface METHODS { ACCOUNT: { GET_BY_PUUID: string; GET_BY_RIOT_ID: string; GET_BY_ACCESS_TOKEN: string; GET_ACTIVE_SHARD_FOR_PLAYER: string; }; CHAMPION_MASTERY: { GET_ALL_CHAMPIONS: string; GET_CHAMPION_MASTERY: string; GET_TOP_CHAMPIONS: string; GET_CHAMPION_MASTERY_SCORE: string; }; CHAMPION: { GET_CHAMPION_ROTATIONS: string; }; CLASH: { GET_PLAYERS_BY_SUMMONER: string; GET_TEAM: string; GET_TOURNAMENTS: string; GET_TOURNAMENT: string; GET_TOURNAMENT_TEAM: string; }; LEAGUE_EXP: { GET_LEAGUE_ENTRIES: string; }; LEAGUE: { GET_CHALLENGER_BY_QUEUE: string; GET_ENTRIES_BY_PUUID: string; GET_ALL_ENTRIES: string; GET_GRANDMASTER_BY_QUEUE: string; GET_LEAGUE_BY_ID: string; GET_MASTER_BY_QUEUE: string; }; LOL_CHALLENGES: { GET_CONFIG: string; GET_PERCENTILES: string; GET_CONFIG_BY_ID: string; GET_LEADERBOARD_BY_ID: string; GET_PERCENTILES_BY_ID: string; GET_PLAYER_DATA_BY_PUUID: string; }; LOL_STATUS: { GET_PLATFORM_DATA: string; }; LOR_DECK: { GET_DECKS_FOR_PLAYER: string; POST_CREATE_DECK_FOR_PLAYER: string; }; LOR_INVENTORY: { GET_CARDS_OWNED_BY_PLAYER: string; }; LOR_MATCH: { GET_MATCH_IDS_BY_PUUID: string; GET_MATCH_BY_ID: string; }; LOR_RANKED: { GET_MASTER_TIER: string; }; LOR_STATUS_V1: { GET_PLATFORM_DATA: string; }; MATCH_V5: { GET_IDS_BY_PUUID: string; GET_MATCH_BY_ID: string; GET_MATCH_TIMELINE_BY_ID: string; }; SPECTATOR_TFT_V5: { GET_GAME_BY_PUUID: string; GET_FEATURED_GAMES: string; }; SPECTATOR: { GET_GAME_BY_SUMMONER_ID: string; GET_FEATURED_GAMES: string; }; SUMMONER: { GET_BY_RSO_PUUID: string; GET_BY_ACCOUNT_ID: string; GET_BY_PUUID: string; GET_BY_SUMMONER_ID: string; GET_BY_ACCESS_TOKEN: string; }; TFT_LEAGUE: { GET_CHALLENGER: string; GET_ENTRIES_BY_SUMMONER: string; GET_ALL_ENTRIES: string; GET_GRANDMASTER: string; GET_LEAGUE_BY_ID: string; GET_MASTER: string; GET_TOP_RATED_LADDER_BY_QUEUE: string; }; TFT_MATCH: { GET_MATCH_IDS_BY_PUUID: string; GET_MATCH_BY_ID: string; }; TFT_STATUS_V1: { GET_PLATFORM_DATA: string; }; TFT_SUMMONER: { GET_BY_ACCOUNT_ID: string; GET_BY_ACCESS_TOKEN: string; GET_BY_PUUID: string; GET_BY_SUMMONER_ID: string; }; TOURNAMENT_STUB_V5: { POST_CREATE_CODES: string; GET_TOURNAMENT_BY_CODE: string; GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: string; POST_CREATE_PROVIDER: string; POST_CREATE_TOURNAMENT: string; }; TOURNAMENT_V5: { POST_CREATE_CODES: string; GET_TOURNAMENT_BY_CODE: string; PUT_TOURNAMENT_CODE: string; GET_TOURNAMENT_GAME_DETAILS: string; GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: string; POST_CREATE_PROVIDER: string; POST_CREATE_TOURNAMENT: string; }; VAL_CONTENT: { GET_CONTENT: string; }; VAL_MATCH: { GET_MATCH_BY_ID: string; GET_MATCHLIST_BY_PUUID: string; GET_RECENT_MATCHES_BY_QUEUE: string; }; VAL_RANKED: { GET_LEADERBOARD_BY_QUEUE: string; }; VAL_STATUS_V1: { GET_PLATFORM_DATA: string; }; } export declare const METHODS: { readonly ACCOUNT: { readonly GET_BY_PUUID: "/riot/account/v1/accounts/by-puuid/:puuid"; readonly GET_BY_RIOT_ID: "/riot/account/v1/accounts/by-riot-id/:gameName/:tagLine"; readonly GET_BY_ACCESS_TOKEN: "/riot/account/v1/accounts/me"; readonly GET_ACTIVE_SHARD_FOR_PLAYER: "/riot/account/v1/active-shards/by-game/:game/by-puuid/:puuid"; }; readonly CHAMPION_MASTERY: { readonly GET_ALL_CHAMPIONS: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID"; readonly GET_CHAMPION_MASTERY: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID/by-champion/:championId"; readonly GET_TOP_CHAMPIONS: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID/top"; readonly GET_CHAMPION_MASTERY_SCORE: "/lol/champion-mastery/v4/scores/by-puuid/:encryptedPUUID"; }; readonly CHAMPION: { readonly GET_CHAMPION_ROTATIONS: "/lol/platform/v3/champion-rotations"; }; readonly CLASH: { readonly GET_PLAYERS_BY_SUMMONER: "/lol/clash/v1/players/by-summoner/:summonerId"; readonly GET_TEAM: "/lol/clash/v1/teams/:teamId"; readonly GET_TOURNAMENTS: "/lol/clash/v1/tournaments"; readonly GET_TOURNAMENT: "/lol/clash/v1/tournaments/:tournamentId"; readonly GET_TOURNAMENT_TEAM: "/lol/clash/v1/tournaments/by-team/:teamId"; }; readonly LEAGUE_EXP: { readonly GET_LEAGUE_ENTRIES: "/lol/league-exp/v4/entries/:queue/:tier/:division"; }; readonly LEAGUE: { readonly GET_CHALLENGER_BY_QUEUE: "/lol/league/v4/challengerleagues/by-queue/:queue"; readonly GET_ENTRIES_BY_PUUID: "/lol/league/v4/entries/by-puuid/:puuid"; readonly GET_ALL_ENTRIES: "/lol/league/v4/entries/:queue/:tier/:division"; readonly GET_GRANDMASTER_BY_QUEUE: "/lol/league/v4/grandmasterleagues/by-queue/:queue"; readonly GET_LEAGUE_BY_ID: "/lol/league/v4/leagues/:leagueId"; readonly GET_MASTER_BY_QUEUE: "/lol/league/v4/masterleagues/by-queue/:queue"; }; readonly LOL_CHALLENGES: { readonly GET_CONFIG: "/lol/challenges/v1/challenges/config"; readonly GET_PERCENTILES: "/lol/challenges/v1/challenges/percentiles"; readonly GET_CONFIG_BY_ID: "/lol/challenges/v1/challenges/:challengeId/config"; readonly GET_LEADERBOARD_BY_ID: "/lol/challenges/v1/challenges/:challengeId/leaderboards/by-level/:level"; readonly GET_PERCENTILES_BY_ID: "/lol/challenges/v1/challenges/:challengeId/percentiles"; readonly GET_PLAYER_DATA_BY_PUUID: "/lol/challenges/v1/player-data/:puuid"; }; readonly LOL_STATUS: { readonly GET_PLATFORM_DATA: "/lol/status/v4/platform-data"; }; readonly LOR_DECK: { readonly GET_DECKS_FOR_PLAYER: "/lor/deck/v1/decks/me"; readonly POST_CREATE_DECK_FOR_PLAYER: "/lor/deck/v1/decks/me"; }; readonly LOR_INVENTORY: { readonly GET_CARDS_OWNED_BY_PLAYER: "/lor/inventory/v1/cards/me"; }; readonly LOR_MATCH: { readonly GET_MATCH_IDS_BY_PUUID: "/lor/match/v1/matches/by-puuid/:puuid/ids"; readonly GET_MATCH_BY_ID: "/lor/match/v1/matches/:matchId"; }; readonly LOR_RANKED: { readonly GET_MASTER_TIER: "/lor/ranked/v1/leaderboards"; }; readonly LOR_STATUS_V1: { readonly GET_PLATFORM_DATA: "/lor/status/v1/platform-data"; }; readonly MATCH_V5: { readonly GET_IDS_BY_PUUID: "/lol/match/v5/matches/by-puuid/:puuid/ids"; readonly GET_MATCH_BY_ID: "/lol/match/v5/matches/:matchId"; readonly GET_MATCH_TIMELINE_BY_ID: "/lol/match/v5/matches/:matchId/timeline"; }; readonly SPECTATOR_TFT_V5: { readonly GET_GAME_BY_PUUID: "/lol/spectator/tft/v5/active-games/by-puuid/:puuid"; readonly GET_FEATURED_GAMES: "/lol/spectator/tft/v5/featured-games"; }; readonly SPECTATOR: { readonly GET_GAME_BY_SUMMONER_ID: "/lol/spectator/v5/active-games/by-summoner/:summonerId"; readonly GET_FEATURED_GAMES: "/lol/spectator/v5/featured-games"; }; readonly SUMMONER: { readonly GET_BY_RSO_PUUID: "/fulfillment/v1/summoners/by-puuid/:rsoPuuid"; readonly GET_BY_ACCESS_TOKEN: "/lol/summoner/v4/summoners/me"; readonly GET_BY_ACCOUNT_ID: "/lol/summoner/v4/summoners/by-account/:accountId"; readonly GET_BY_PUUID: "/lol/summoner/v4/summoners/by-puuid/:puuid"; readonly GET_BY_SUMMONER_ID: "/lol/summoner/v4/summoners/:summonerId"; }; readonly TFT_LEAGUE: { readonly GET_CHALLENGER: "/tft/league/v1/challenger"; readonly GET_ENTRIES_BY_SUMMONER: "/tft/league/v1/entries/by-summoner/:summonerId"; readonly GET_ALL_ENTRIES: "/tft/league/v1/entries/:tier/:division"; readonly GET_GRANDMASTER: "/tft/league/v1/grandmaster"; readonly GET_LEAGUE_BY_ID: "/tft/league/v1/leagues/:leagueId"; readonly GET_MASTER: "/tft/league/v1/master"; readonly GET_TOP_RATED_LADDER_BY_QUEUE: "/tft/league/v1/rated-ladders/:queue/top"; }; readonly TFT_MATCH: { readonly GET_MATCH_IDS_BY_PUUID: "/tft/match/v1/matches/by-puuid/:puuid/ids"; readonly GET_MATCH_BY_ID: "/tft/match/v1/matches/:matchId"; }; readonly TFT_STATUS_V1: { readonly GET_PLATFORM_DATA: "/tft/status/v1/platform-data"; }; readonly TFT_SUMMONER: { readonly GET_BY_ACCOUNT_ID: "/tft/summoner/v1/summoners/by-account/:accountId"; readonly GET_BY_PUUID: "/tft/summoner/v1/summoners/by-puuid/:puuid"; readonly GET_BY_ACCESS_TOKEN: "/tft/summoner/v1/summoners/me"; readonly GET_BY_SUMMONER_ID: "/tft/summoner/v1/summoners/:summonerId"; }; readonly TOURNAMENT_STUB_V5: { readonly POST_CREATE_CODES: "/lol/tournament-stub/v5/codes"; readonly GET_TOURNAMENT_BY_CODE: "/lol/tournament-stub/v5/codes/:tournamentCode"; readonly GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: "/lol/tournament-stub/v5/lobby-events/by-code/:tournamentCode"; readonly POST_CREATE_PROVIDER: "/lol/tournament-stub/v5/providers"; readonly POST_CREATE_TOURNAMENT: "/lol/tournament-stub/v5/tournaments"; }; readonly TOURNAMENT_V5: { readonly POST_CREATE_CODES: "/lol/tournament/v5/codes"; readonly GET_TOURNAMENT_BY_CODE: "/lol/tournament/v5/codes/:tournamentCode"; readonly PUT_TOURNAMENT_CODE: "/lol/tournament/v5/codes/:tournamentCode"; readonly GET_TOURNAMENT_GAME_DETAILS: "/lol/tournament/v5/games/by-code/:tournamentCode"; readonly GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: "/lol/tournament/v5/lobby-events/by-code/:tournamentCode"; readonly POST_CREATE_PROVIDER: "/lol/tournament/v5/providers"; readonly POST_CREATE_TOURNAMENT: "/lol/tournament/v5/tournaments"; }; readonly VAL_CONTENT: { readonly GET_CONTENT: "/val/content/v1/contents"; }; readonly VAL_MATCH: { readonly GET_MATCH_BY_ID: "/val/match/v1/matches/:matchId"; readonly GET_MATCHLIST_BY_PUUID: "/val/match/v1/matchlists/by-puuid/:puuid"; readonly GET_RECENT_MATCHES_BY_QUEUE: "/val/match/v1/recent-matches/by-queue/:queue"; }; readonly VAL_RANKED: { readonly GET_LEADERBOARD_BY_QUEUE: "/val/ranked/v1/leaderboards/by-act/:actId"; }; readonly VAL_STATUS_V1: { readonly GET_PLATFORM_DATA: "/val/status/v1/platform-data"; }; };