New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

kindred-api

Package Overview
Dependencies
Maintainers
1
Versions
114
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kindred-api - npm Package Compare versions

Comparing version 2.0.58 to 2.0.60

54

CHANGELOG.md

@@ -9,4 +9,56 @@ From here onwards I'll try to adhere to [Semantic Versioning](http://semver.org). I kinda messed up early, and so it ended up as 2.0 (lol). Sorry guys!

## [2.0.58]() - Fixed initialization bug I made in 2.0.57.
## [2.0.61]() - Fix query parameter constants.
Riot has recently updated their API to make passing in query params to API endpoints simpler. Instead of `champListData` or `runeListData`, it is now universally named `tags`.
## [2.0.60]() Add showHeaders, add `api_key=` to URL for developer convenience
### showHeaders
*showHeaders on (old behavior) & showKey off & debug on*
![Imgur](http://i.imgur.com/JsamNSn.png)
```javascript
/*
200 https://na1.api.riotgames.com/lol/summoner/v3/summoners/by-name/contractz?api_key=
{ 'x-app-rate-limit-count': '1:10,1:600',
'x-method-rate-limit-count': '1:10,2:600',
'x-rate-limit-count': '1:10,1:600',
'retry-after': undefined }
*/
```
*showHeaders off & showKey off & debug on*
![Imgur](http://i.imgur.com/w6BzkDz.png)
```javascript
/*
200 https://na1.api.riotgames.com/lol/summoner/v3/summoners/by-name/contractz?api_key=
*/
```
### `api_key=`
*new behavior with appended `api_key` & showKey off & debug on*
```javascript
// https://na1.api.riotgames.com/lol/static-data/v3/champions?champListData=all&api_key=
```
*old behavior & showKey off & debug on*
```javascript
// https://na1.api.riotgames.com/lol/static-data/v3/champions?champListData=all
```
## [2.0.59](https://github.com/ChauTNguyen/kindred-api/commit/5543ee9c62d455ba5c2c9f8855556444a0997357) - Cache hits shouldn't have api keys in urls as well.
## [2.0.58](https://github.com/ChauTNguyen/kindred-api/commit/6a9a50460e99055c690e8b146ee250098cb3e586) - Fixed initialization bug I made in 2.0.57.
Default cache timers weren't set up when cache ttl was not passed in. Fixed.

@@ -13,0 +65,0 @@

4

dist/kindred-api.min.js

@@ -1,2 +0,2 @@

!function(e,t){if("function"==typeof define&&define.amd)define("kindred-api",["module","redis","double-ended-queue","xregexp","chalk","request","chalk","query-string"],t);else if("undefined"!=typeof exports)t(module,require("redis"),require("double-ended-queue"),require("xregexp"),require("chalk"),require("request"),require("chalk"),require("query-string"));else{var i={exports:{}};t(i,e.redis,e.doubleEndedQueue,e.xregexp,e.chalk,e.request,e.chalk,e.queryString),e.kindredApi=i.exports}}(this,function(e,t,i,n,r,s,o,a){"use strict";function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t,i){return"boolean"==typeof t&&(i=t,t=void 0),new V({key:e,defaultRegion:t,debug:i,limits:R.DEV,cacheOptions:I[0]})}function l(e,t){e?console.log(e):console.log(t)}var h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),c=function(){function e(){u(this,e),this.cache={}}return g(e,[{key:"get",value:function(e,t){return this.cache[e.key]?Date.now()>this.cache[e.key].expires?(delete this.cache[e.key],t("expired cache key")):t(null,this.cache[e.key].value):t("cache key doesn't exist")}},{key:"set",value:function(e,t){this.cache[e.key]={expires:e.ttl?this.setExp(Date.now(),e.ttl):null,value:t}}},{key:"setExp",value:function(e,t){return e+1e3*t}}]),e}(),m=function(){function e(i){u(this,e);var n=Object.assign({},i||{},{host:"127.0.0.1",port:6379,keyPrefix:"kindredAPI-"});this.client=t.createClient(n.port,n.host),this.client.on("error",function(e){console.log("Redis error:",e)}),this.prefix=n.keyPrefix}return g(e,[{key:"get",value:function(e,t){this.client.get(this.prefix+e.key,function(e,i){i?t(e,i):t(e)})}},{key:"set",value:function(e,t){this.client.setex(this.prefix+e.key,e.ttl,t)}}]),e}(),y=function(){function e(t,n){u(this,e),this.allowedRequests=t,this.seconds=n,this.madeRequests=new i,this.buffer=50*this.seconds}return g(e,[{key:"_reload",value:function(){for(var e=(new Date).getTime();this.madeRequests.length>0&&e-this.madeRequests.peekFront()>=this.buffer;)this.madeRequests.shift()}},{key:"addRequest",value:function(){this.madeRequests.push((new Date).getTime()+1e3*this.seconds)}},{key:"requestAvailable",value:function(){return this._reload(),this.madeRequests.length<this.allowedRequests}}]),e}(),p={MONTH:2592e3,WEEK:604800,DAY:846400,SIX_HOURS:21600,THREE_HOURS:10800,TWO_HOURS:7200,HOUR:3600,THIRTY_MINUTES:1800,SHORT:600,NONE:null},v={CHAMPION:p.MONTH,CHAMPION_MASTERY:p.SIX_HOURS,CURRENT_GAME:p.NONE,FEATURED_GAMES:p.NONE,GAME:p.HOUR,LEAGUE:p.SIX_HOURS,STATIC:p.MONTH,STATUS:p.NONE,MATCH:p.MONTH,MATCHLIST:p.HOUR,RUNES_MASTERIES:p.WEEK,SPECTATOR:p.NONE,STATS:p.HOUR,SUMMONER:p.DAY,TOURNAMENT_STUB:p.HOUR,TOURNAMENT:p.HOUR},I=["in-memory-cache","redis"],R={DEV:[[10,10],[500,600]],PROD:[[500,10],[3e4,600]]},S={BRAZIL:"BR1",EUROPE:"EUN1",EUROPE_WEST:"EUW1",KOREA:"KR",LATIN_AMERICA_NORTH:"LA1",LATIN_AMERICA_SOUTH:"LA2",NORTH_AMERICA:"NA1",OCEANIA:"OC1",RUSSIA:"RU",TURKEY:"TR1",JAPAN:"JP1"},f=["version","locale"],_={NONE:[],CHAMPION:{LIST:["freeToPlay"]},STATIC:{CHAMPION:{LIST:[].concat(f,["dataById","champListData"]),ONE:[].concat(f,["champData"])},ITEM:{LIST:[].concat(f,["itemListData"]),ONE:[].concat(f,["itemData"])},LANGUAGE_STRING:{LIST:[].concat(f)},MAP:{LIST:[].concat(f)},MASTERY:{LIST:[].concat(f,["masteryListData"]),ONE:[].concat(f,["masteryData"])},PROFILE_ICON:{LIST:[].concat(f)},RUNE:{LIST:[].concat(f,["runeListData"]),ONE:[].concat(f,["runeData"])},SUMMONER_SPELL:{LIST:[].concat(f,["dataById","spellListData"]),ONE:[].concat(f,["spellData"])}},MATCHLIST:{GET:["queue","beginTime","endIndex","season","champion","beginIndex","endTime"]},STATS:{RANKED:["season"],SUMMARY:["season"]}},E={CUSTOM:0,NORMAL_3x3:8,NORMAL_5x5_BLIND:2,NORMAL_5x5_DRAFT:14,RANKED_SOLO_5x5:4,RANKED_PREMADE_5x5:6,RANKED_PREMADE_3x3:9,RANKED_FLEX_TT:9,RANKED_TEAM_3x3:41,RANKED_TEAM_5x5:42,ODIN_5x5_BLIND:16,ODIN_5x5_DRAFT:17,BOT_5x5:7,BOT_ODIN_5x5:25,BOT_5x5_INTRO:31,BOT_5x5_BEGINNER:32,BOT_5x5_INTERMEDIATE:33,BOT_TT_3x3:52,GROUP_FINDER_5x5:61,ARAM_5x5:65,ONEFORALL_5x5:70,FIRSTBLOOD_1x1:72,FIRSTBLOOD_2x2:73,SR_6x6:75,URF_5x5:76,ONEFORALL_MIRRORMODE_5x5:78,BOT_URF_5x5:83,NIGHTMARE_BOT_5x5_RANK1:91,NIGHTMARE_BOT_5x5_RANK2:92,NIGHTMARE_BOT_5x5_RANK5:93,ASCENSION_5x5:96,HEXAKILL:98,BILGEWATER_ARAM_5x5:100,KING_PORO_5x5:300,COUNTER_PICK:310,BILGEWATER_5x5:313,SIEGE:315,DEFINITELY_NOT_DOMINION_5x5:317,ARURF_5X5:318,ARSR_5x5:325,TEAM_BUILDER_DRAFT_UNRANKED_5x5:400,TEAM_BUILDER_DRAFT_RANKED_5x5:410,TEAM_BUILDER_RANKED_SOLO:420,RANKED_FLEX_SR:440,ASSASSINATE_5x5:600,DARKSTAR_3x3:610},T={RANKED_SOLO_5x5:"RANKED_SOLO_5x5",RANKED_FLEX_SR:"RANKED_FLEX_SR",RANKED_FLEX_TT:"RANKED_FLEX_TT"},b={BRAZIL:"br",EUROPE:"eune",EUROPE_WEST:"euw",KOREA:"kr",LATIN_AMERICA_NORTH:"lan",LATIN_AMERICA_SOUTH:"las",NORTH_AMERICA:"na",OCEANIA:"oce",RUSSIA:"ru",TURKEY:"tr",JAPAN:"jp"},A={br:"BRAZIL",eune:"EUROPE",euw:"EUROPE_WEST",kr:"KOREA",lan:"LATIN_AMERICA_NORTH",las:"LATIN_AMERICA_SOUTH",na:"NORTH_AMERICA",oce:"OCEANIA",ru:"RUSSIA",tr:"TURKEY",jp:"JAPAN"},M={CHAMPION:"platform",CHAMPION_MASTERY:"champion-mastery",GAME:null,LEAGUE:"league",STATUS:"status",MASTERIES:"platform",MATCH:"match",MATCHLIST:null,RUNES:"platform",RUNES_MASTERIES:"platform",SPECTATOR:"spectator",STATIC_DATA:"static-data",STATS:null,SUMMONER:"summoner",TOURNAMENT_STUB:"tournament-stub",TOURNAMENT:"tournament"},N={CHAMPION:3,CHAMPION_MASTERY:3,CURRENT_GAME:1,FEATURED_GAMES:1,GAME:1.3,LEAGUE:3,STATIC_DATA:3,STATUS:3,MATCH:3,RUNES_MASTERIES:3,SPECTATOR:3,STATS:1.3,SUMMONER:3,TOURNAMENT_STUB:3,TOURNAMENT:3},O=n("^[0-9\\p{L} _\\.]+$"),U=function(e){var t=!0,i=!1,n=void 0;try{for(var r,s=Object.keys(b)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;if(b[o]===e)return!0}}catch(e){i=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(i)throw n}}return!1},C={int:function(e){return e.every(function(e){return Number.isInteger(e)})},string:function(e){return e.every(function(e){return"string"==typeof e})}},q={int:function(e){return e&&Array.isArray(e)&&C.int(e)&&e.length>0},string:function(e){return e&&Array.isArray(e)&&C.string(e)&&e.length>0}},L=function(e){return Array.isArray(e)&&2!==e.length||!q.int(e[0])||2!==e[0].length||!q.int(e[1])||2!==e[1].length},k=function(e){return"function"==typeof e},w={200:"Success",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Data Not Found",405:"Method not allowed",415:"Unsupported Media Type",429:"Rate Limit Exceeded",500:"Internal Service Error",503:"Service Unavailable",504:"Gateway Timeout"},D=function(e){return w[e]||""},P=[200,400,500],x=function(e){var t=D(e).toUpperCase(),i=e+" "+t;return e>=P[0]&&e<P[1]?r.green(e):e>=P[1]&&e<P[2]?r.red(i):r.bold.red(i)},H=function(e,t,i){console.log(t,"@",i),console.log({"x-rate-limit-type":e.headers["x-rate-limit-type"],"x-app-rate-limit-count":e.headers["x-app-rate-limit-count"],"x-method-rate-limit-count":e.headers["x-method-rate-limit-count"],"x-rate-limit-count":e.headers["x-rate-limit-count"],"retry-after":e.headers["retry-after"]}),console.log()},B={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,DATA_NOT_FOUND:404,METHOD_NOT_ALLOWED:405,UNSUPPORTED_MEDIA_TYPE:415,RATE_LIMIT_EXCEEDED:429,INTERNAL_SERVICE_ERROR:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},G=B.INTERNAL_SERVICE_ERROR,K=B.RATE_LIMIT_EXCEEDED,F=function(e){return e>=G||e===K},Y=function(e){return Number.isInteger(e)&&e>0},V=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.key,n=t.defaultRegion,r=void 0===n?b.NORTH_AMERICA:n,s=t.debug,a=void 0!==s&&s,d=t.showKey,l=void 0!==d&&d,g=t.limits,p=t.spread,R=t.cacheOptions,S=t.cacheTTL;if(u(this,e),0===arguments.length||"object"!==h(arguments[0])||"string"!=typeof i)throw new Error(""+o.red("API key not passed in!"));if(this.key=i,this.defaultRegion=U(r)?r:void 0,!this.defaultRegion)throw new Error(o.red("setRegion() by Kindred failed: "+o.yellow(r)+" is an invalid region.")+"\n"+o.red("Try importing "+o.yellow("require('kindred-api').REGIONS")+" and using one of those values instead."));if(this.debug=a,this.showKey=l,R?(R===I[0]?this.cache=new c:R===I[1]?this.cache=new m:this.cache=new R,this.CACHE_TIMERS=S?S:v):this.cache={get:function(e,t){return t(null,null)},set:function(e,t){}},R||(this.CACHE_TIMERS=this._disableCache(v)),g){if(L(g))throw console.log(o.red("Initialization of Kindred failed: Invalid "+o.yellow("limits")+". Valid examples: "+o.yellow("[[10, 10], [500, 600]]"))+"."),console.log(o.red("You can also pass in one of these two constants:")+" LIMITS.DEV/LIMITS.PROD"),console.log(""+o.red("and Kindred will set the limits appropriately.")),new Error;this.limits={},this.spread=p;var f=!0,_=!1,E=void 0;try{for(var T,A=Object.keys(b)[Symbol.iterator]();!(f=(T=A.next()).done);f=!0){var M=T.value;this.limits[b[M]]=[new y(g[0][0],g[0][1]),new y(g[1][0],g[1][1]),this.spread?new y(g[0][0]/10,.5):null]}}catch(e){_=!0,E=e}finally{try{!f&&A.return&&A.return()}finally{if(_)throw E}}}this.Champion={getChampions:this.getChamps.bind(this),getAll:this.getChamps.bind(this),all:this.getChamps.bind(this),getChampion:this.getChamp.bind(this),get:this.getChamp.bind(this),list:this.listChampions.bind(this),by:{id:this.getChampionById.bind(this)}},this.ChampionMastery={getChampionMastery:this.getChampMastery.bind(this),get:this.getChampMastery.bind(this),getChampionMasteries:this.getChampMasteries.bind(this),getAll:this.getChampMasteries.bind(this),all:this.getChampMasteries.bind(this),getTotalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),getTotalScore:this.getTotalChampMasteryScore.bind(this),totalScore:this.getTotalChampMasteryScore.bind(this),total:this.getTotalChampMasteryScore.bind(this),score:this.getTotalChampMasteryScore.bind(this)},this.CurrentGame={getCurrentGame:this.getCurrentGame.bind(this),get:this.getCurrentGame.bind(this)},this.FeaturedGames={getFeaturedGames:this.getFeaturedGames.bind(this),get:this.getFeaturedGames.bind(this),list:this.listFeaturedGames.bind(this)},this.Game={getRecentGames:this.getRecentGames.bind(this),getRecent:this.getRecentGames.bind(this),recent:this.getRecentGames.bind(this),get:this.getRecentGames.bind(this)},this.League={getLeagues:this.getLeagues.bind(this),leagues:this.getLeagues.bind(this),get:this.getLeagues.bind(this),getLeaguePositions:this.getLeaguePositions.bind(this),getPositions:this.getLeaguePositions.bind(this),positions:this.getLeaguePositions.bind(this),getChallengers:this.getChallengers.bind(this),challengers:this.getChallengers.bind(this),getMasters:this.getMasters.bind(this),masters:this.getMasters.bind(this)},this.Challenger={list:this.listChallengers.bind(this)},this.Master={list:this.listMasters.bind(this)},this.Static={Champion:{list:this.getStaticChampionList.bind(this),by:{id:this.getStaticChampionById.bind(this)}},Item:{list:this.getStaticItemList.bind(this),by:{id:this.getStaticItemById.bind(this)}},LanguageString:{list:this.getStaticLanguageStringList.bind(this)},Language:{list:this.getStaticLanguageList.bind(this)},Map:{list:this.getStaticMapList.bind(this)},Mastery:{list:this.getStaticMasteryList.bind(this),by:{id:this.getStaticMasteryById.bind(this)}},ProfileIcon:{list:this.getStaticProfileIconList.bind(this)},Realm:{list:this.getStaticRealmList.bind(this)},Rune:{list:this.getStaticRuneList.bind(this),by:{id:this.getStaticRuneById.bind(this)}},SummonerSpell:{list:this.getStaticSummonerSpellList.bind(this),by:{id:this.getStaticSummonerSpellById.bind(this)}},Version:{list:this.getStaticVersionList.bind(this)},getChampions:this.getChampionList.bind(this),champions:this.getChampionList.bind(this),getChampion:this.getChampion.bind(this),champion:this.getChampion.bind(this),getItems:this.getItems.bind(this),items:this.getItems.bind(this),getItem:this.getItem.bind(this),item:this.getItem.bind(this),getLanguageStrings:this.getLanguageStrings.bind(this),languageStrings:this.getLanguageStrings.bind(this),getLanguages:this.getLanguages.bind(this),languages:this.getLanguages.bind(this),getMapData:this.getMapData.bind(this),mapData:this.getMapData.bind(this),map:this.getMapData.bind(this),maps:this.getMapData.bind(this),getMasteries:this.getMasteryList.bind(this),masteries:this.getMasteryList.bind(this),getMastery:this.getMastery.bind(this),mastery:this.getMastery.bind(this),getProfileIcons:this.getProfileIcons.bind(this),profileIcons:this.getProfileIcons.bind(this),getRealmData:this.getRealmData.bind(this),realmData:this.getRealmData.bind(this),realm:this.getRealmData.bind(this),realms:this.getRealmData.bind(this),getRunes:this.getRuneList.bind(this),runes:this.getRuneList.bind(this),getRune:this.getRune.bind(this),rune:this.getRune.bind(this),getSummonerSpells:this.getSummonerSpells.bind(this),summonerSpells:this.getSummonerSpells.bind(this),spells:this.getSummonerSpells.bind(this),getSummonerSpell:this.getSummonerSpell.bind(this),summonerSpell:this.getSummonerSpell.bind(this),spell:this.getSummonerSpell.bind(this),getVersionData:this.getVersionData.bind(this),versionData:this.getVersionData.bind(this),version:this.getVersionData.bind(this),versions:this.getVersionData.bind(this)},this.Status={getShardStatus:this.getShardStatus.bind(this),getStatus:this.getShardStatus.bind(this),get:this.getShardStatus.bind(this)},this.Match={getMatch:this.getMatch.bind(this),get:this.getMatch.bind(this),getMatchTimeline:this.getMatchTimeline.bind(this),getTimeline:this.getMatchTimeline.bind(this),timeline:this.getMatchTimeline.bind(this),by:{id:this.getMatchById.bind(this)},Timeline:{by:{id:this.getMatchTimelineById.bind(this)}}},this.Matchlist={getMatchlist:this.getMatchlist.bind(this),get:this.getMatchlist.bind(this),getRecentMatchlist:this.getRecentMatchlist.bind(this),recent:this.getRecentMatchlist.bind(this),by:{account:this.getMatchlistByAccountId.bind(this),id:this.getMatchlistById.bind(this),name:this.getMatchlistByName.bind(this)}},this.MatchHistory={},this.RunesMasteries={getRunes:this.getRunes.bind(this),runes:this.getRunes.bind(this),getMasteries:this.getMasteries.bind(this),masteries:this.getMasteries.bind(this)},this.Runes={get:this.getRunes.bind(this),by:{account:this.getRunesByAccountId.bind(this),id:this.getRunesById.bind(this),name:this.getRunesByName.bind(this)}},this.Masteries={get:this.getMasteries.bind(this),by:{account:this.getMasteriesByAccountId.bind(this),id:this.getMasteriesById.bind(this),name:this.getMasteriesByName.bind(this)}},this.Stats={getRankedStats:this.getRankedStats.bind(this),ranked:this.getRankedStats.bind(this),getStatsSummary:this.getStatsSummary.bind(this),summary:this.getStatsSummary.bind(this)},this.Summoner={getSummoner:this.getSummoner.bind(this),get:this.getSummoner.bind(this),getRunes:this.getRunes.bind(this),runes:this.getRunes.bind(this),getMasteries:this.getMasteries.bind(this),masteries:this.getMasteries.bind(this),getMatchHistory:this.getRecentMatchlist.bind(this),matchHistory:this.getRecentMatchlist.bind(this),getMatchlist:this.getMatchlist.bind(this),matchlist:this.getMatchlist.bind(this),getChampionMasteries:this.getChampMasteries.bind(this),championMasteries:this.getChampMasteries.bind(this),getTotalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),totalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),by:{account:this.getSummonerByAccountId.bind(this),id:this.getSummonerById.bind(this),name:this.getSummonerByName.bind(this)}}}return g(e,[{key:"canMakeRequest",value:function(e){var t=!this.spread||this.limits[e][2].requestAvailable();return this.limits[e][0].requestAvailable()&&this.limits[e][1].requestAvailable()&&t}},{key:"_sanitizeName",value:function(e){if(this._validName(e))return e.replace(/\s/g,"").toLowerCase();this._logError(this._validName.name,"Name "+o.yellow(e)+" is not valid. Request failed.")}},{key:"_validName",value:function(e){return O.test(e)&&e.length<=16}},{key:"_cacheData",value:function(e,t,i){Y(t)&&this.cache.set({key:e,ttl:t},i)}},{key:"_makeUrl",value:function(e,t,i){var n=i?"":t+"/",r="api/lol/"+n,s=encodeURI(e),o="https://"+t+".api.riotgames.com/"+r+s,a="https://"+S[A[t]].toLowerCase()+".api.riotgames.com/lol/"+s;return a.lastIndexOf("v3")===-1?o:a}},{key:"_stringifyOptions",value:function(e,t){var i="",n=function(e,t,i){return e+(e?"&":"")+t+"="+i};if(t.lastIndexOf("v3")===-1)i=a.stringify(e);else{var r=!0,s=!1,o=void 0;try{for(var u,d=Object.keys(e)[Symbol.iterator]();!(r=(u=d.next()).done);r=!0){var l=u.value;if(Array.isArray(e[l])){var h=!0,g=!1,c=void 0;try{for(var m,y=e[l][Symbol.iterator]();!(h=(m=y.next()).done);h=!0){i=n(i,l,m.value)}}catch(e){g=!0,c=e}finally{try{!h&&y.return&&y.return()}finally{if(g)throw c}}}else i=n(i,l,e[l])}}catch(e){s=!0,o=e}finally{try{!r&&d.return&&d.return()}finally{if(s)throw o}}}return i}},{key:"_constructFullUrl",value:function(e,t){return e+(e.lastIndexOf("?")===-1?"?":"&")+"api_key="+t}},{key:"_disableCache",value:function(e){var t=!0,i=!1,n=void 0;try{for(var r,s=Object.keys(e)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){e[r.value]=0}}catch(e){i=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(i)throw n}}return e}},{key:"_verifyOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],i=Object.keys(e);if(0!==t.length||0!==i.length){var n=!0,r=!1,s=void 0;try{for(var a,u=i[Symbol.iterator]();!(n=(a=u.next()).done);n=!0){var d=a.value;if(!t.includes(d))throw new Error(o.red("Invalid query params! Valid: "+t))}}catch(e){r=!0,s=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw s}}}}},{key:"_baseRequest",value:function(e,t){var i=this,n=e.endUrl,r=e.region,a=void 0===r?this.defaultRegion:r,u=e.staticReq,d=void 0!==u&&u,l=e.options,h=void 0===l?{}:l,g=e.cacheParams,c=void 0===g?{}:g;return function e(){return new Promise(function(r,u){var l=i._stringifyOptions(h,n),g=l?"?"+l:"",m=i._makeUrl(n+g,a,d),y=i._constructFullUrl(m,i.key);i.cache.get({key:m},function(n,l){if(l){i.debug&&console.log(o.green("CACHE HIT")+" "+y);var h=JSON.parse(l);return t?t(n,h):r(h)}if(i.limits){var g=i;!function t(i){if(!g.canMakeRequest(a)){return setTimeout(function(){return t.bind(g)(i)},1e3/4.5)}d||(g.limits[a][0].addRequest(),g.limits[a][1].addRequest(),g.spread&&g.limits[a][2].addRequest()),s({url:y},function(n,s,a){if(s&&a){var d=s.statusCode,l=x(d),h=1e3*s.headers["retry-after"]||1e3,p=m,v=c.ttl;if(g.debug){var I=g.showKey?y:m;H(s,l,o.yellow(I))}return k(i)?F(d)?(g.debug&&console.log("Resending callback request.\n"),setTimeout(function(){return t.bind(g)(i)},h)):d>=400?i(d):(g._cacheData(p,v,a),i(n,JSON.parse(a))):F(d)?(g.debug&&console.log("Resending promise request.\n"),setTimeout(function(){return r(e())},h)):d>=400?u(d):(g._cacheData(p,v,a),r(JSON.parse(a)))}console.log(n,m)})}(t)}else s({url:y},function(e,n,s){if(n){var a=i,d=n.statusCode,l=x(d);if(a.debug){var h=a.showKey?y:m;H(n,l,o.yellow(h))}return k(t)?d>=400?t(d):t(e,JSON.parse(s)):d>=400?u(d):r(JSON.parse(s))}console.log(e,m)})})})}()}},{key:"_championMasteryRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.CHAMPION_MASTERY+"/v"+N.CHAMPION+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION_MASTERY}},t)}},{key:"_championRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.CHAMPION+"/v"+N.CHAMPION+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION}},t)}},{key:"_spectatorRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.SPECTATOR+"/v"+N.SPECTATOR+"/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.SPECTATOR}},t)}},{key:"_staticRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.STATIC_DATA+"/v"+N.STATIC_DATA+"/"+i,staticReq:!0,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATIC}},t)}},{key:"_statusRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.STATUS+"/v"+N.STATUS+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATUS}},t)}},{key:"_gameRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:"v"+N.GAME+"/game/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.GAME}},t)}},{key:"_leagueRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.LEAGUE+"/v"+N.LEAGUE+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.LEAGUE}},t)}},{key:"_matchRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options,s=e.cacheParams,o=void 0===s?{ttl:this.CACHE_TIMERS.MATCH}:s;return this._baseRequest({endUrl:M.MATCH+"/v"+N.MATCH+"/"+i,region:n,options:r,cacheParams:o},t)}},{key:"_matchlistRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._matchRequest({endUrl:"matchlists/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCHLIST}},t)}},{key:"_runesMasteriesRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.RUNES_MASTERIES+"/v"+N.RUNES_MASTERIES+"/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.RUNES_MASTERIES}},t)}},{key:"_statsRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:"v"+N.STATS+"/stats/by-summoner/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATS}},t)}},{key:"_summonerRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.SUMMONER+"/v"+N.SUMMONER+"/summoners/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.SUMMONER}},t)}},{key:"_logError",value:function(e,t){throw new Error(o.bold.yellow(e)+" "+o.red("request")+" "+o.bold.red("FAILED")+o.red("; "+t))}},{key:"setRegion",value:function(e){if(this.defaultRegion=U(e)?e:void 0,!this.defaultRegion)throw new Error(o.red("setRegion() by Kindred failed: "+o.yellow(e)+" is an invalid region.")+"\n"+o.red("Try importing "+o.yellow("require('kindred-api').REGIONS")+" and using one of those values instead."))}},{key:"getChamps",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.CHAMPION.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._championRequest({endUrl:"champions",region:t,options:i},n)}},{key:"getChamp",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.championId,r=arguments[1];return Number.isInteger(i)||Number.isInteger(n)?this._championRequest({endUrl:"champions/"+(i||n),region:t},r):this._logError(this.getChamp.name,"required params "+o.yellow("`id/championId` (int)")+" not passed in")}},{key:"getChampMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.playerId,n=e.championId,r=arguments[1];return Number.isInteger(i)&&Number.isInteger(n)?this._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+i+"/by-champion/"+n,region:t},r):this._logError(this.getChampMastery.name,"required params "+o.yellow("`playerId` (int) AND `championId` (int)")+" not passed in")}},{key:"getChampMasteries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getChampMasteries.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getTotalChampMasteryScore",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._championMasteryRequest({endUrl:"scores/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._championMasteryRequest({endUrl:"scores/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._championMasteryRequest({endUrl:"scores/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getTotalChampMasteryScore.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getCurrentGame",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._spectatorRequest({endUrl:"active-games/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._spectatorRequest({endUrl:"active-games/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._spectatorRequest({endUrl:"active-games/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getCurrentGame.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getFeaturedGames",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._spectatorRequest({endUrl:"featured-games",region:t},i)}},{key:"getRecentGames",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._gameRequest({endUrl:"by-summoner/"+r.id+"/recent",region:i},l))})}):Number.isInteger(s||a||u)?this._gameRequest({endUrl:"by-summoner/"+(s||a||u)+"/recent",region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._gameRequest({endUrl:"by-summoner/"+s.id+"/recent",region:i},l))})}):this._logError(this.getRecentGames.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getLeagues",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._leagueRequest({endUrl:"leagues/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._leagueRequest({endUrl:"leagues/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._leagueRequest({endUrl:"leagues/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getLeagues.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getLeaguePositions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._leagueRequest({endUrl:"positions/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._leagueRequest({endUrl:"positions/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._leagueRequest({endUrl:"positions/by-summoner/"+s.id,region:i},l))})}):void this._logError(this.getLeaguePositions.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getChallengers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.queue,n=void 0===i?"RANKED_SOLO_5x5":i,r=arguments[1];if(r=k(arguments[0])?arguments[0]:arguments[1],"string"==typeof n)return this._leagueRequest({endUrl:"challengerleagues/by-queue/"+n,region:t},r);this._logError(this.getChallengers.name,"required params "+o.yellow("`queue` (string)")+" not passed in")}},{key:"getMasters",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.queue,n=void 0===i?"RANKED_SOLO_5x5":i,r=arguments[1];if(r=k(arguments[0])?arguments[0]:arguments[1],"string"==typeof n)return this._leagueRequest({endUrl:"masterleagues/by-queue/"+n,region:t},r);this._logError(this.getMasters.name,"required params "+o.yellow("`queue` (string)")+" not passed in")}},{key:"getChampionList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.CHAMPION.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"champions",region:t,options:i},n)}},{key:"getChampion",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.championId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.CHAMPION.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"champions/"+(i||n),region:t,options:r},s):this._logError(this.getChampion.name,"required params "+o.yellow("`id/championId` (int)")+" not passed in")}},{key:"getItems",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.ITEM.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"items",region:t,options:i},n)}},{key:"getItem",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.itemId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.ITEM.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"items/"+(i||n),region:t,options:r},s):this._logError(this.getItem.name,"required params "+o.yellow("`id/itemId` (int)")+" not passed in")}},{key:"getLanguageStrings",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.LANGUAGE_STRING.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"language-strings",region:t,options:i},n)}},{key:"getLanguages",value:function(){
var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"languages",region:t},i)}},{key:"getMapData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.MAP.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"maps",region:t,options:i},n)}},{key:"getMasteryList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.MASTERY.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"masteries",region:t,options:i},n)}},{key:"getMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.masteryId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.MASTERY.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"masteries/"+(i||n),region:t,options:r},s):this._logError(this.getMastery.name,"required params "+o.yellow("`id/masteryId` (int)")+" not passed in")}},{key:"getProfileIcons",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.PROFILE_ICON.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"profile-icons",region:t,options:i},n)}},{key:"getRealmData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"realms",region:t},i)}},{key:"getRuneList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.RUNE.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"runes",region:t,options:i},n)}},{key:"getRune",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.runeId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.RUNE.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"runes/"+(i||n),region:t,options:r},s):this._logError(this.getRune.name,"required params "+o.yellow("`id/runeId` (int)")+" not passed in")}},{key:"getSummonerSpells",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.SUMMONER_SPELL.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"summoner-spells",region:t,options:i},n)}},{key:"getSummonerSpell",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.spellId,r=e.summonerSpellId,s=e.options,a=arguments[1];return this._verifyOptions(s,_.STATIC.SUMMONER_SPELL.ONE),Number.isInteger(i||n||r)?this._staticRequest({endUrl:"summoner-spells/"+(i||n||r),region:t,options:s},a):this._logError(this.getSummonerSpell.name,"required params "+o.yellow("`id/spellId/summonerSpellId` (int)")+" not passed in")}},{key:"getVersionData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"versions",region:t,options:i},n)}},{key:"getShardStatus",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),"string"!=typeof t||U(t)?this._statusRequest({endUrl:"shard-data",region:t},i):this._logError(this.getShardStatus.name,"invalid region!")}},{key:"getMatch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.matchId,r=arguments[1];return Number.isInteger(i||n)?this._matchRequest({endUrl:"matches/"+(i||n),region:t},r):this._logError(this.getMatch.name,"required params "+o.yellow("`id/matchId` (int)")+" not passed in")}},{key:"getMatchlist",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=void 0===l?{queue:E.TEAM_BUILDER_RANKED_SOLO}:l,g=arguments[1];return this._verifyOptions(h,_.MATCHLIST.GET),Number.isInteger(n||r)?this._matchlistRequest({endUrl:"by-account/"+(n||r),region:i,options:h},g):Number.isInteger(s||a||u)?new Promise(function(t,n){return e.getSummoner({id:s,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId,region:i,options:h},g))})}):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId,region:i,options:h},g))})}):this._logError(this.getMatchlist.name,"required params "+o.yellow("`accountId/accId` (int)")+", "+o.yellow("`id/summonerId/playerId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRecentMatchlist",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?this._matchlistRequest({endUrl:"by-account/"+(n||r)+"/recent",region:i},l):Number.isInteger(s||a||u)?new Promise(function(t,n){return e.getSummoner({id:s,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId+"/recent",region:i},l))})}):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId+"/recent",region:i},l))})}):this._logError(this.getRecentMatchlist.name,"required params "+o.yellow("`accountId/accId` (int)")+", "+o.yellow("`id/summonerId/playerId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getMatchTimeline",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.matchId,r=arguments[1];return Number.isInteger(i||n)?this._matchRequest({endUrl:"timelines/by-match/"+(i||n),region:t},r):this._logError(this.getMatchTimeline.name,"required params "+o.yellow("`id/matchId` (int)")+" not passed in")}},{key:"getRunes",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._runesMasteriesRequest({endUrl:"runes/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._runesMasteriesRequest({endUrl:"runes/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._runesMasteriesRequest({endUrl:"runes/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getRunes.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getMasteries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getMasteries.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRankedStats",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=arguments[1];return this._verifyOptions(l,_.STATS.RANKED),Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(h?h(n):s(n)):t(e._statsRequest({endUrl:r.id+"/ranked",region:i,options:l},h))})}):Number.isInteger(s||a||u)?this._statsRequest({endUrl:(s||a||u)+"/ranked",region:i,options:l},h):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(h?h(r):n(r)):t(e._statsRequest({endUrl:s.id+"/ranked",region:i,options:l},h))})}):void this._logError(this.getRankedStats.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getStatsSummary",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=arguments[1];return this._verifyOptions(l,_.STATS.SUMMARY),Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(h?h(n):s(n)):t(e._statsRequest({endUrl:r.id+"/summary",region:i,options:l},h))})}):Number.isInteger(s||a||u)?this._statsRequest({endUrl:(s||a||u)+"/summary",region:i,options:l},h):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(h?h(r):n(r)):t(e._statsRequest({endUrl:s.id+"/summary",region:i,options:l},h))})}):void this._logError(this.getStatsSummary.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getSummoner",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.summonerId,r=e.playerId,s=e.accountId,a=e.accId,u=e.name,d=arguments[1];return Number.isInteger(i||n||r)?this._summonerRequest({endUrl:""+(i||n||r),region:t},d):"string"==typeof u?this._summonerRequest({endUrl:"by-name/"+this._sanitizeName(u),region:t},d):Number.isInteger(s||a)?this._summonerRequest({endUrl:"by-account/"+(s||a),region:t},d):this._logError(this.getSummoner.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"listChampions",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Champion.all({options:e,region:t},i)}},{key:"getChampionById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Champion.get({id:e,region:t},i)}},{key:"listFeaturedGames",value:function(e,t){return k(e)&&(t=e,e=void 0),this.FeaturedGames.get({region:e},t)}},{key:"listChallengers",value:function(e,t,i){return U(e)&&(k(t)&&(i=t,t=void 0),t=e,e=void 0),k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),this.League.challengers({queue:e,region:t},i)}},{key:"listMasters",value:function(e,t,i){return U(e)&&(k(t)&&(i=t,t=void 0),t=e,e=void 0),k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),this.League.masters({queue:e,region:t},i)}},{key:"getSummonerByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,accId:e},i)}},{key:"getSummonerById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,id:e},i)}},{key:"getSummonerByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,name:e},i)}},{key:"getMasteriesByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,accId:e},i)}},{key:"getMasteriesById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,id:e},i)}},{key:"getMasteriesByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,name:e},i)}},{key:"getMatchById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Match.get({region:t,id:e},i)}},{key:"getMatchlistByAccountId",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({accId:e,options:t,region:i},n)}},{key:"getMatchlistById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({id:e,options:t,region:i},n)}},{key:"getMatchlistByName",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({name:e,options:t,region:i},n)}},{key:"getMatchTimelineById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Match.timeline({id:e,region:t},i)}},{key:"getRunesByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,accId:e},i)}},{key:"getRunesById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,id:e},i)}},{key:"getRunesByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,name:e},i)}},{key:"getStaticChampionList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.champions({region:t,options:e},i)}},{key:"getStaticChampionById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.champion({id:e,options:t,region:i},n)}},{key:"getStaticItemList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.items({options:e,region:t},i)}},{key:"getStaticItemById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.item({id:e,options:t,region:i},n)}},{key:"getStaticLanguageStringList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.languageStrings({options:e,region:t},i)}},{key:"getStaticLanguageList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.languages({region:e},t)}},{key:"getStaticMapList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.mapData({options:e,region:t},i)}},{key:"getStaticMasteryList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.masteries({options:e,region:t},i)}},{key:"getStaticMasteryById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.mastery({id:e,options:t,region:i},n)}},{key:"getStaticProfileIconList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.profileIcons({options:e,region:t},i)}},{key:"getStaticRealmList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.realm({region:e},t)}},{key:"getStaticRuneList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.runes({options:e,region:t},i)}},{key:"getStaticRuneById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.rune({id:e,options:t,region:i},n)}},{key:"getStaticSummonerSpellList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.spells({options:e,region:t},i)}},{key:"getStaticSummonerSpellById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.spell({id:e,options:t,region:i},n)}},{key:"getStaticVersionList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.versions({region:e},t)}}]),e}(),X={Kindred:V,CACHE_TYPES:I,LIMITS:R,QUEUE_STRINGS:T,QUEUE_TYPES:E,REGIONS:b,TIME_CONSTANTS:p,QuickStart:d,print:l};e.exports=X});
!function(e,t){if("function"==typeof define&&define.amd)define("kindred-api",["module","redis","double-ended-queue","xregexp","chalk","request","chalk","query-string"],t);else if("undefined"!=typeof exports)t(module,require("redis"),require("double-ended-queue"),require("xregexp"),require("chalk"),require("request"),require("chalk"),require("query-string"));else{var i={exports:{}};t(i,e.redis,e.doubleEndedQueue,e.xregexp,e.chalk,e.request,e.chalk,e.queryString),e.kindredApi=i.exports}}(this,function(e,t,i,n,r,s,o,a){"use strict";function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t,i){return"boolean"==typeof t&&(i=t,t=void 0),new V({key:e,defaultRegion:t,debug:i,limits:S.DEV,cacheOptions:I[0]})}function l(e,t){e?console.log(e):console.log(t)}var h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),c=function(){function e(){u(this,e),this.cache={}}return g(e,[{key:"get",value:function(e,t){return this.cache[e.key]?Date.now()>this.cache[e.key].expires?(delete this.cache[e.key],t("expired cache key")):t(null,this.cache[e.key].value):t("cache key doesn't exist")}},{key:"set",value:function(e,t){this.cache[e.key]={expires:e.ttl?this.setExp(Date.now(),e.ttl):null,value:t}}},{key:"setExp",value:function(e,t){return e+1e3*t}}]),e}(),m=function(){function e(i){u(this,e);var n=Object.assign({},i||{},{host:"127.0.0.1",port:6379,keyPrefix:"kindredAPI-"});this.client=t.createClient(n.port,n.host),this.client.on("error",function(e){console.log("Redis error:",e)}),this.prefix=n.keyPrefix}return g(e,[{key:"get",value:function(e,t){this.client.get(this.prefix+e.key,function(e,i){i?t(e,i):t(e)})}},{key:"set",value:function(e,t){this.client.setex(this.prefix+e.key,e.ttl,t)}}]),e}(),y=function(){function e(t,n){u(this,e),this.allowedRequests=t,this.seconds=n,this.madeRequests=new i,this.buffer=50*this.seconds}return g(e,[{key:"_reload",value:function(){for(var e=(new Date).getTime();this.madeRequests.length>0&&e-this.madeRequests.peekFront()>=this.buffer;)this.madeRequests.shift()}},{key:"addRequest",value:function(){this.madeRequests.push((new Date).getTime()+1e3*this.seconds)}},{key:"requestAvailable",value:function(){return this._reload(),this.madeRequests.length<this.allowedRequests}}]),e}(),p={MONTH:2592e3,WEEK:604800,DAY:846400,SIX_HOURS:21600,THREE_HOURS:10800,TWO_HOURS:7200,HOUR:3600,THIRTY_MINUTES:1800,SHORT:600,NONE:null},v={CHAMPION:p.MONTH,CHAMPION_MASTERY:p.SIX_HOURS,CURRENT_GAME:p.NONE,FEATURED_GAMES:p.NONE,GAME:p.HOUR,LEAGUE:p.SIX_HOURS,STATIC:p.MONTH,STATUS:p.NONE,MATCH:p.MONTH,MATCHLIST:p.HOUR,RUNES_MASTERIES:p.WEEK,SPECTATOR:p.NONE,STATS:p.HOUR,SUMMONER:p.DAY,TOURNAMENT_STUB:p.HOUR,TOURNAMENT:p.HOUR},I=["in-memory-cache","redis"],S={DEV:[[10,10],[500,600]],PROD:[[500,10],[3e4,600]]},R={BRAZIL:"BR1",EUROPE:"EUN1",EUROPE_WEST:"EUW1",KOREA:"KR",LATIN_AMERICA_NORTH:"LA1",LATIN_AMERICA_SOUTH:"LA2",NORTH_AMERICA:"NA1",OCEANIA:"OC1",RUSSIA:"RU",TURKEY:"TR1",JAPAN:"JP1"},f=["version","locale"],_={NONE:[],CHAMPION:{LIST:["freeToPlay"]},STATIC:{CHAMPION:{LIST:[].concat(f,["dataById","champListData"]),ONE:[].concat(f,["champData"])},ITEM:{LIST:[].concat(f,["itemListData"]),ONE:[].concat(f,["itemData"])},LANGUAGE_STRING:{LIST:[].concat(f)},MAP:{LIST:[].concat(f)},MASTERY:{LIST:[].concat(f,["masteryListData"]),ONE:[].concat(f,["masteryData"])},PROFILE_ICON:{LIST:[].concat(f)},RUNE:{LIST:[].concat(f,["runeListData"]),ONE:[].concat(f,["runeData"])},SUMMONER_SPELL:{LIST:[].concat(f,["dataById","spellListData"]),ONE:[].concat(f,["spellData"])}},MATCHLIST:{GET:["queue","beginTime","endIndex","season","champion","beginIndex","endTime"]},STATS:{RANKED:["season"],SUMMARY:["season"]}},E={CUSTOM:0,NORMAL_3x3:8,NORMAL_5x5_BLIND:2,NORMAL_5x5_DRAFT:14,RANKED_SOLO_5x5:4,RANKED_PREMADE_5x5:6,RANKED_PREMADE_3x3:9,RANKED_FLEX_TT:9,RANKED_TEAM_3x3:41,RANKED_TEAM_5x5:42,ODIN_5x5_BLIND:16,ODIN_5x5_DRAFT:17,BOT_5x5:7,BOT_ODIN_5x5:25,BOT_5x5_INTRO:31,BOT_5x5_BEGINNER:32,BOT_5x5_INTERMEDIATE:33,BOT_TT_3x3:52,GROUP_FINDER_5x5:61,ARAM_5x5:65,ONEFORALL_5x5:70,FIRSTBLOOD_1x1:72,FIRSTBLOOD_2x2:73,SR_6x6:75,URF_5x5:76,ONEFORALL_MIRRORMODE_5x5:78,BOT_URF_5x5:83,NIGHTMARE_BOT_5x5_RANK1:91,NIGHTMARE_BOT_5x5_RANK2:92,NIGHTMARE_BOT_5x5_RANK5:93,ASCENSION_5x5:96,HEXAKILL:98,BILGEWATER_ARAM_5x5:100,KING_PORO_5x5:300,COUNTER_PICK:310,BILGEWATER_5x5:313,SIEGE:315,DEFINITELY_NOT_DOMINION_5x5:317,ARURF_5X5:318,ARSR_5x5:325,TEAM_BUILDER_DRAFT_UNRANKED_5x5:400,TEAM_BUILDER_DRAFT_RANKED_5x5:410,TEAM_BUILDER_RANKED_SOLO:420,RANKED_FLEX_SR:440,ASSASSINATE_5x5:600,DARKSTAR_3x3:610},T={RANKED_SOLO_5x5:"RANKED_SOLO_5x5",RANKED_FLEX_SR:"RANKED_FLEX_SR",RANKED_FLEX_TT:"RANKED_FLEX_TT"},b={BRAZIL:"br",EUROPE:"eune",EUROPE_WEST:"euw",KOREA:"kr",LATIN_AMERICA_NORTH:"lan",LATIN_AMERICA_SOUTH:"las",NORTH_AMERICA:"na",OCEANIA:"oce",RUSSIA:"ru",TURKEY:"tr",JAPAN:"jp"},A={br:"BRAZIL",eune:"EUROPE",euw:"EUROPE_WEST",kr:"KOREA",lan:"LATIN_AMERICA_NORTH",las:"LATIN_AMERICA_SOUTH",na:"NORTH_AMERICA",oce:"OCEANIA",ru:"RUSSIA",tr:"TURKEY",jp:"JAPAN"},M={CHAMPION:"platform",CHAMPION_MASTERY:"champion-mastery",GAME:null,LEAGUE:"league",STATUS:"status",MASTERIES:"platform",MATCH:"match",MATCHLIST:null,RUNES:"platform",RUNES_MASTERIES:"platform",SPECTATOR:"spectator",STATIC_DATA:"static-data",STATS:null,SUMMONER:"summoner",TOURNAMENT_STUB:"tournament-stub",TOURNAMENT:"tournament"},N={CHAMPION:3,CHAMPION_MASTERY:3,CURRENT_GAME:1,FEATURED_GAMES:1,GAME:1.3,LEAGUE:3,STATIC_DATA:3,STATUS:3,MATCH:3,RUNES_MASTERIES:3,SPECTATOR:3,STATS:1.3,SUMMONER:3,TOURNAMENT_STUB:3,TOURNAMENT:3},O=n("^[0-9\\p{L} _\\.]+$"),U=function(e){var t=!0,i=!1,n=void 0;try{for(var r,s=Object.keys(b)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;if(b[o]===e)return!0}}catch(e){i=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(i)throw n}}return!1},C={int:function(e){return e.every(function(e){return Number.isInteger(e)})},string:function(e){return e.every(function(e){return"string"==typeof e})}},q={int:function(e){return e&&Array.isArray(e)&&C.int(e)&&e.length>0},string:function(e){return e&&Array.isArray(e)&&C.string(e)&&e.length>0}},L=function(e){return Array.isArray(e)&&2!==e.length||!q.int(e[0])||2!==e[0].length||!q.int(e[1])||2!==e[1].length},k=function(e){return"function"==typeof e},w={200:"Success",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Data Not Found",405:"Method not allowed",415:"Unsupported Media Type",429:"Rate Limit Exceeded",500:"Internal Service Error",503:"Service Unavailable",504:"Gateway Timeout"},P=function(e){return w[e]||""},D=[200,400,500],x=function(e){var t=P(e).toUpperCase(),i=e+" "+t;return e>=D[0]&&e<D[1]?r.green(e):e>=D[1]&&e<D[2]?r.red(i):r.bold.red(i)},H=function(e,t,i,n){console.log(t,"@",i),n&&(console.log({"x-rate-limit-type":e.headers["x-rate-limit-type"],"x-app-rate-limit-count":e.headers["x-app-rate-limit-count"],"x-method-rate-limit-count":e.headers["x-method-rate-limit-count"],"x-rate-limit-count":e.headers["x-rate-limit-count"],"retry-after":e.headers["retry-after"]}),console.log())},B={BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,DATA_NOT_FOUND:404,METHOD_NOT_ALLOWED:405,UNSUPPORTED_MEDIA_TYPE:415,RATE_LIMIT_EXCEEDED:429,INTERNAL_SERVICE_ERROR:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},G=B.INTERNAL_SERVICE_ERROR,K=B.RATE_LIMIT_EXCEEDED,F=function(e){return e>=G||e===K},Y=function(e){return Number.isInteger(e)&&e>0},V=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.key,n=t.defaultRegion,r=void 0===n?b.NORTH_AMERICA:n,s=t.debug,a=void 0!==s&&s,d=t.showKey,l=void 0!==d&&d,g=t.showHeaders,p=void 0!==g&&g,S=t.limits,R=t.spread,f=t.cacheOptions,_=t.cacheTTL;if(u(this,e),0===arguments.length||"object"!==h(arguments[0])||"string"!=typeof i)throw new Error(""+o.red("API key not passed in!"));if(this.key=i,this.defaultRegion=U(r)?r:void 0,!this.defaultRegion)throw new Error(o.red("setRegion() by Kindred failed: "+o.yellow(r)+" is an invalid region.")+"\n"+o.red("Try importing "+o.yellow("require('kindred-api').REGIONS")+" and using one of those values instead."));if(this.debug=a,this.showKey=l,this.showHeaders=p,f?(f===I[0]?this.cache=new c:f===I[1]?this.cache=new m:this.cache=new f,this.CACHE_TIMERS=_?_:v):this.cache={get:function(e,t){return t(null,null)},set:function(e,t){}},f||(this.CACHE_TIMERS=this._disableCache(v)),S){if(L(S))throw console.log(o.red("Initialization of Kindred failed: Invalid "+o.yellow("limits")+". Valid examples: "+o.yellow("[[10, 10], [500, 600]]"))+"."),console.log(o.red("You can also pass in one of these two constants:")+" LIMITS.DEV/LIMITS.PROD"),console.log(""+o.red("and Kindred will set the limits appropriately.")),new Error;this.limits={},this.spread=R;var E=!0,T=!1,A=void 0;try{for(var M,N=Object.keys(b)[Symbol.iterator]();!(E=(M=N.next()).done);E=!0){var O=M.value;this.limits[b[O]]=[new y(S[0][0],S[0][1]),new y(S[1][0],S[1][1]),this.spread?new y(S[0][0]/10,.5):null]}}catch(e){T=!0,A=e}finally{try{!E&&N.return&&N.return()}finally{if(T)throw A}}}this.Champion={getChampions:this.getChamps.bind(this),getAll:this.getChamps.bind(this),all:this.getChamps.bind(this),getChampion:this.getChamp.bind(this),get:this.getChamp.bind(this),list:this.listChampions.bind(this),by:{id:this.getChampionById.bind(this)}},this.ChampionMastery={getChampionMastery:this.getChampMastery.bind(this),get:this.getChampMastery.bind(this),getChampionMasteries:this.getChampMasteries.bind(this),getAll:this.getChampMasteries.bind(this),all:this.getChampMasteries.bind(this),getTotalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),getTotalScore:this.getTotalChampMasteryScore.bind(this),totalScore:this.getTotalChampMasteryScore.bind(this),total:this.getTotalChampMasteryScore.bind(this),score:this.getTotalChampMasteryScore.bind(this)},this.CurrentGame={getCurrentGame:this.getCurrentGame.bind(this),get:this.getCurrentGame.bind(this)},this.FeaturedGames={getFeaturedGames:this.getFeaturedGames.bind(this),get:this.getFeaturedGames.bind(this),list:this.listFeaturedGames.bind(this)},this.Game={getRecentGames:this.getRecentGames.bind(this),getRecent:this.getRecentGames.bind(this),recent:this.getRecentGames.bind(this),get:this.getRecentGames.bind(this)},this.League={getLeagues:this.getLeagues.bind(this),leagues:this.getLeagues.bind(this),get:this.getLeagues.bind(this),getLeaguePositions:this.getLeaguePositions.bind(this),getPositions:this.getLeaguePositions.bind(this),positions:this.getLeaguePositions.bind(this),getChallengers:this.getChallengers.bind(this),challengers:this.getChallengers.bind(this),getMasters:this.getMasters.bind(this),masters:this.getMasters.bind(this)},this.Challenger={list:this.listChallengers.bind(this)},this.Master={list:this.listMasters.bind(this)},this.Static={Champion:{list:this.getStaticChampionList.bind(this),by:{id:this.getStaticChampionById.bind(this)}},Item:{list:this.getStaticItemList.bind(this),by:{id:this.getStaticItemById.bind(this)}},LanguageString:{list:this.getStaticLanguageStringList.bind(this)},Language:{list:this.getStaticLanguageList.bind(this)},Map:{list:this.getStaticMapList.bind(this)},Mastery:{list:this.getStaticMasteryList.bind(this),by:{id:this.getStaticMasteryById.bind(this)}},ProfileIcon:{list:this.getStaticProfileIconList.bind(this)},Realm:{list:this.getStaticRealmList.bind(this)},Rune:{list:this.getStaticRuneList.bind(this),by:{id:this.getStaticRuneById.bind(this)}},SummonerSpell:{list:this.getStaticSummonerSpellList.bind(this),by:{id:this.getStaticSummonerSpellById.bind(this)}},Version:{list:this.getStaticVersionList.bind(this)},getChampions:this.getChampionList.bind(this),champions:this.getChampionList.bind(this),getChampion:this.getChampion.bind(this),champion:this.getChampion.bind(this),getItems:this.getItems.bind(this),items:this.getItems.bind(this),getItem:this.getItem.bind(this),item:this.getItem.bind(this),getLanguageStrings:this.getLanguageStrings.bind(this),languageStrings:this.getLanguageStrings.bind(this),getLanguages:this.getLanguages.bind(this),languages:this.getLanguages.bind(this),getMapData:this.getMapData.bind(this),mapData:this.getMapData.bind(this),map:this.getMapData.bind(this),maps:this.getMapData.bind(this),getMasteries:this.getMasteryList.bind(this),masteries:this.getMasteryList.bind(this),getMastery:this.getMastery.bind(this),mastery:this.getMastery.bind(this),getProfileIcons:this.getProfileIcons.bind(this),profileIcons:this.getProfileIcons.bind(this),getRealmData:this.getRealmData.bind(this),realmData:this.getRealmData.bind(this),realm:this.getRealmData.bind(this),realms:this.getRealmData.bind(this),getRunes:this.getRuneList.bind(this),runes:this.getRuneList.bind(this),getRune:this.getRune.bind(this),rune:this.getRune.bind(this),getSummonerSpells:this.getSummonerSpells.bind(this),summonerSpells:this.getSummonerSpells.bind(this),spells:this.getSummonerSpells.bind(this),getSummonerSpell:this.getSummonerSpell.bind(this),summonerSpell:this.getSummonerSpell.bind(this),spell:this.getSummonerSpell.bind(this),getVersionData:this.getVersionData.bind(this),versionData:this.getVersionData.bind(this),version:this.getVersionData.bind(this),versions:this.getVersionData.bind(this)},this.Status={getShardStatus:this.getShardStatus.bind(this),getStatus:this.getShardStatus.bind(this),get:this.getShardStatus.bind(this)},this.Match={getMatch:this.getMatch.bind(this),get:this.getMatch.bind(this),getMatchTimeline:this.getMatchTimeline.bind(this),getTimeline:this.getMatchTimeline.bind(this),timeline:this.getMatchTimeline.bind(this),by:{id:this.getMatchById.bind(this)},Timeline:{by:{id:this.getMatchTimelineById.bind(this)}}},this.Matchlist={getMatchlist:this.getMatchlist.bind(this),get:this.getMatchlist.bind(this),getRecentMatchlist:this.getRecentMatchlist.bind(this),recent:this.getRecentMatchlist.bind(this),by:{account:this.getMatchlistByAccountId.bind(this),id:this.getMatchlistById.bind(this),name:this.getMatchlistByName.bind(this)}},this.MatchHistory={},this.RunesMasteries={getRunes:this.getRunes.bind(this),runes:this.getRunes.bind(this),getMasteries:this.getMasteries.bind(this),masteries:this.getMasteries.bind(this)},this.Runes={get:this.getRunes.bind(this),by:{account:this.getRunesByAccountId.bind(this),id:this.getRunesById.bind(this),name:this.getRunesByName.bind(this)}},this.Masteries={get:this.getMasteries.bind(this),by:{account:this.getMasteriesByAccountId.bind(this),id:this.getMasteriesById.bind(this),name:this.getMasteriesByName.bind(this)}},this.Stats={getRankedStats:this.getRankedStats.bind(this),ranked:this.getRankedStats.bind(this),getStatsSummary:this.getStatsSummary.bind(this),summary:this.getStatsSummary.bind(this)},this.Summoner={getSummoner:this.getSummoner.bind(this),get:this.getSummoner.bind(this),getRunes:this.getRunes.bind(this),runes:this.getRunes.bind(this),getMasteries:this.getMasteries.bind(this),masteries:this.getMasteries.bind(this),getMatchHistory:this.getRecentMatchlist.bind(this),matchHistory:this.getRecentMatchlist.bind(this),getMatchlist:this.getMatchlist.bind(this),matchlist:this.getMatchlist.bind(this),getChampionMasteries:this.getChampMasteries.bind(this),championMasteries:this.getChampMasteries.bind(this),getTotalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),totalChampionMasteryScore:this.getTotalChampMasteryScore.bind(this),by:{account:this.getSummonerByAccountId.bind(this),id:this.getSummonerById.bind(this),name:this.getSummonerByName.bind(this)}}}return g(e,[{key:"canMakeRequest",value:function(e){var t=!this.spread||this.limits[e][2].requestAvailable();return this.limits[e][0].requestAvailable()&&this.limits[e][1].requestAvailable()&&t}},{key:"_sanitizeName",value:function(e){if(this._validName(e))return e.replace(/\s/g,"").toLowerCase();this._logError(this._validName.name,"Name "+o.yellow(e)+" is not valid. Request failed.")}},{key:"_validName",value:function(e){return O.test(e)&&e.length<=16}},{key:"_cacheData",value:function(e,t,i){Y(t)&&this.cache.set({key:e,ttl:t},i)}},{key:"_makeUrl",value:function(e,t){var i="api/lol/"+t+"/",n=encodeURI(e),r="https://"+t+".api.riotgames.com/"+i+n,s="https://"+R[A[t]].toLowerCase()+".api.riotgames.com/lol/"+n;return s.lastIndexOf("v3")===-1?r:s}},{key:"_stringifyOptions",value:function(e,t){var i="",n=function(e,t,i){return e+(e?"&":"")+t+"="+i};if(t.lastIndexOf("v3")===-1)i=a.stringify(e);else{var r=!0,s=!1,o=void 0;try{for(var u,d=Object.keys(e)[Symbol.iterator]();!(r=(u=d.next()).done);r=!0){var l=u.value;if(Array.isArray(e[l])){var h=!0,g=!1,c=void 0;try{for(var m,y=e[l][Symbol.iterator]();!(h=(m=y.next()).done);h=!0){i=n(i,l,m.value)}}catch(e){g=!0,c=e}finally{try{!h&&y.return&&y.return()}finally{if(g)throw c}}}else i=n(i,l,e[l])}}catch(e){s=!0,o=e}finally{try{!r&&d.return&&d.return()}finally{if(s)throw o}}}return i}},{key:"_constructFullUrl",value:function(e,t){return e+this._getAPISuffix(e,t)}},{key:"_disableCache",value:function(e){var t=!0,i=!1,n=void 0;try{for(var r,s=Object.keys(e)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){e[r.value]=0}}catch(e){i=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(i)throw n}}return e}},{key:"_verifyOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],i=Object.keys(e);if(0!==t.length||0!==i.length){var n=!0,r=!1,s=void 0;try{for(var a,u=i[Symbol.iterator]();!(n=(a=u.next()).done);n=!0){var d=a.value;if(!t.includes(d))throw new Error(o.red("Invalid query params! Valid: "+t))}}catch(e){r=!0,s=e}finally{try{!n&&u.return&&u.return()}finally{if(r)throw s}}}}},{key:"_getAPISuffix",value:function(e,t){return(e.lastIndexOf("?")===-1?"?":"&")+"api_key="+(t?t:"")}},{key:"_baseRequest",value:function(e,t){var i=this,n=e.endUrl,r=e.region,a=void 0===r?this.defaultRegion:r,u=e.staticReq,d=void 0!==u&&u,l=e.options,h=void 0===l?{}:l,g=e.cacheParams,c=void 0===g?{}:g;return function e(){return new Promise(function(r,u){var l=i._stringifyOptions(h,n),g=l?"?"+l:"",m=i._makeUrl(n+g,a),y=m+i._getAPISuffix(m),p=i._constructFullUrl(m,i.key);i.cache.get({key:m},function(n,l){if(l){if(i.debug){var h=i.showKey?p:m;console.log(o.green("CACHE HIT")+" @ "+h)}var g=JSON.parse(l);return t?t(n,g):r(g)}if(i.limits){var v=i;!function t(i){if(!v.canMakeRequest(a)){return setTimeout(function(){return t.bind(v)(i)},1e3/4.5)}d||(v.limits[a][0].addRequest(),v.limits[a][1].addRequest(),v.spread&&v.limits[a][2].addRequest()),s({url:p},function(n,s,a){if(s&&a){var d=s.statusCode,l=x(d),h=1e3*s.headers["retry-after"]||1e3,g=m,I=c.ttl;if(v.debug){var S=v.showKey?p:y;H(s,l,o.yellow(S),v.showHeaders)}return k(i)?F(d)?(v.debug&&console.log("Resending callback request.\n"),setTimeout(function(){return t.bind(v)(i)},h)):d>=400?i(d):(v._cacheData(g,I,a),i(n,JSON.parse(a))):F(d)?(v.debug&&console.log("Resending promise request.\n"),setTimeout(function(){return r(e())},h)):d>=400?u(d):(v._cacheData(g,I,a),r(JSON.parse(a)))}console.log(n,m)})}(t)}else s({url:p},function(e,n,s){if(n){var a=i,d=n.statusCode,l=x(d);if(a.debug){var h=a.showKey?p:y;H(n,l,o.yellow(h),a.showHeaders)}return k(t)?d>=400?t(d):t(e,JSON.parse(s)):d>=400?u(d):r(JSON.parse(s))}console.log(e,m)})})})}()}},{key:"_championMasteryRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.CHAMPION_MASTERY+"/v"+N.CHAMPION+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION_MASTERY}},t)}},{key:"_championRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.CHAMPION+"/v"+N.CHAMPION+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION}},t)}},{key:"_spectatorRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.SPECTATOR+"/v"+N.SPECTATOR+"/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.SPECTATOR}},t)}},{key:"_staticRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.STATIC_DATA+"/v"+N.STATIC_DATA+"/"+i,staticReq:!0,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATIC}},t)}},{key:"_statusRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.STATUS+"/v"+N.STATUS+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATUS}},t)}},{key:"_gameRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:"v"+N.GAME+"/game/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.GAME}},t)}},{key:"_leagueRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:M.LEAGUE+"/v"+N.LEAGUE+"/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.LEAGUE}},t)}},{key:"_matchRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options,s=e.cacheParams,o=void 0===s?{ttl:this.CACHE_TIMERS.MATCH}:s;return this._baseRequest({endUrl:M.MATCH+"/v"+N.MATCH+"/"+i,region:n,options:r,cacheParams:o},t)}},{key:"_matchlistRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._matchRequest({endUrl:"matchlists/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCHLIST}},t)}},{key:"_runesMasteriesRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.RUNES_MASTERIES+"/v"+N.RUNES_MASTERIES+"/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.RUNES_MASTERIES}},t)}},{key:"_statsRequest",value:function(e,t){var i=e.endUrl,n=e.region,r=e.options;return this._baseRequest({endUrl:"v"+N.STATS+"/stats/by-summoner/"+i,region:n,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATS}},t)}},{key:"_summonerRequest",value:function(e,t){var i=e.endUrl,n=e.region;return this._baseRequest({endUrl:M.SUMMONER+"/v"+N.SUMMONER+"/summoners/"+i,region:n,cacheParams:{ttl:this.CACHE_TIMERS.SUMMONER}},t)}},{key:"_logError",value:function(e,t){throw new Error(o.bold.yellow(e)+" "+o.red("request")+" "+o.bold.red("FAILED")+o.red("; "+t))}},{key:"setRegion",value:function(e){if(this.defaultRegion=U(e)?e:void 0,!this.defaultRegion)throw new Error(o.red("setRegion() by Kindred failed: "+o.yellow(e)+" is an invalid region.")+"\n"+o.red("Try importing "+o.yellow("require('kindred-api').REGIONS")+" and using one of those values instead."))}},{key:"getChamps",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.CHAMPION.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._championRequest({endUrl:"champions",region:t,options:i},n)}},{key:"getChamp",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.championId,r=arguments[1];return Number.isInteger(i)||Number.isInteger(n)?this._championRequest({endUrl:"champions/"+(i||n),region:t},r):this._logError(this.getChamp.name,"required params "+o.yellow("`id/championId` (int)")+" not passed in")}},{key:"getChampMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.playerId,n=e.championId,r=arguments[1];return Number.isInteger(i)&&Number.isInteger(n)?this._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+i+"/by-champion/"+n,region:t},r):this._logError(this.getChampMastery.name,"required params "+o.yellow("`playerId` (int) AND `championId` (int)")+" not passed in")}},{key:"getChampMasteries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._championMasteryRequest({endUrl:"champion-masteries/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getChampMasteries.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getTotalChampMasteryScore",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._championMasteryRequest({endUrl:"scores/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._championMasteryRequest({endUrl:"scores/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._championMasteryRequest({endUrl:"scores/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getTotalChampMasteryScore.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getCurrentGame",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._spectatorRequest({endUrl:"active-games/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._spectatorRequest({endUrl:"active-games/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._spectatorRequest({endUrl:"active-games/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getCurrentGame.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getFeaturedGames",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._spectatorRequest({endUrl:"featured-games",region:t},i)}},{key:"getRecentGames",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._gameRequest({endUrl:"by-summoner/"+r.id+"/recent",region:i},l))})}):Number.isInteger(s||a||u)?this._gameRequest({endUrl:"by-summoner/"+(s||a||u)+"/recent",region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._gameRequest({endUrl:"by-summoner/"+s.id+"/recent",region:i},l))})}):this._logError(this.getRecentGames.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getLeagues",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._leagueRequest({endUrl:"leagues/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._leagueRequest({endUrl:"leagues/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._leagueRequest({endUrl:"leagues/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getLeagues.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getLeaguePositions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._leagueRequest({endUrl:"positions/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._leagueRequest({endUrl:"positions/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._leagueRequest({endUrl:"positions/by-summoner/"+s.id,region:i},l))})}):void this._logError(this.getLeaguePositions.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getChallengers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.queue,n=void 0===i?"RANKED_SOLO_5x5":i,r=arguments[1];if(r=k(arguments[0])?arguments[0]:arguments[1],"string"==typeof n)return this._leagueRequest({endUrl:"challengerleagues/by-queue/"+n,region:t},r);this._logError(this.getChallengers.name,"required params "+o.yellow("`queue` (string)")+" not passed in")}},{key:"getMasters",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.queue,n=void 0===i?"RANKED_SOLO_5x5":i,r=arguments[1];if(r=k(arguments[0])?arguments[0]:arguments[1],"string"==typeof n)return this._leagueRequest({endUrl:"masterleagues/by-queue/"+n,region:t},r);this._logError(this.getMasters.name,"required params "+o.yellow("`queue` (string)")+" not passed in")}},{key:"getChampionList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.CHAMPION.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"champions",region:t,options:i},n)}},{key:"getChampion",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.championId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.CHAMPION.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"champions/"+(i||n),region:t,options:r},s):this._logError(this.getChampion.name,"required params "+o.yellow("`id/championId` (int)")+" not passed in")}},{key:"getItems",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.ITEM.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"items",region:t,options:i},n)}},{key:"getItem",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.itemId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.ITEM.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"items/"+(i||n),region:t,options:r},s):this._logError(this.getItem.name,"required params "+o.yellow("`id/itemId` (int)")+" not passed in")}},{key:"getLanguageStrings",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.LANGUAGE_STRING.LIST),k(arguments[0])&&(n=arguments[0],
arguments[0]=void 0),this._staticRequest({endUrl:"language-strings",region:t,options:i},n)}},{key:"getLanguages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"languages",region:t},i)}},{key:"getMapData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.MAP.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"maps",region:t,options:i},n)}},{key:"getMasteryList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.MASTERY.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"masteries",region:t,options:i},n)}},{key:"getMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.masteryId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.MASTERY.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"masteries/"+(i||n),region:t,options:r},s):this._logError(this.getMastery.name,"required params "+o.yellow("`id/masteryId` (int)")+" not passed in")}},{key:"getProfileIcons",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.PROFILE_ICON.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"profile-icons",region:t,options:i},n)}},{key:"getRealmData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"realms",region:t},i)}},{key:"getRuneList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.RUNE.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"runes",region:t,options:i},n)}},{key:"getRune",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.runeId,r=e.options,s=arguments[1];return this._verifyOptions(r,_.STATIC.RUNE.ONE),Number.isInteger(i||n)?this._staticRequest({endUrl:"runes/"+(i||n),region:t,options:r},s):this._logError(this.getRune.name,"required params "+o.yellow("`id/runeId` (int)")+" not passed in")}},{key:"getSummonerSpells",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return this._verifyOptions(i,_.STATIC.SUMMONER_SPELL.LIST),k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"summoner-spells",region:t,options:i},n)}},{key:"getSummonerSpell",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.spellId,r=e.summonerSpellId,s=e.options,a=arguments[1];return this._verifyOptions(s,_.STATIC.SUMMONER_SPELL.ONE),Number.isInteger(i||n||r)?this._staticRequest({endUrl:"summoner-spells/"+(i||n||r),region:t,options:s},a):this._logError(this.getSummonerSpell.name,"required params "+o.yellow("`id/spellId/summonerSpellId` (int)")+" not passed in")}},{key:"getVersionData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.options,n=arguments[1];return k(arguments[0])&&(n=arguments[0],arguments[0]=void 0),this._staticRequest({endUrl:"versions",region:t,options:i},n)}},{key:"getShardStatus",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=arguments[1];return k(arguments[0])&&(i=arguments[0],arguments[0]=void 0),"string"!=typeof t||U(t)?this._statusRequest({endUrl:"shard-data",region:t},i):this._logError(this.getShardStatus.name,"invalid region!")}},{key:"getMatch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.matchId,r=arguments[1];return Number.isInteger(i||n)?this._matchRequest({endUrl:"matches/"+(i||n),region:t},r):this._logError(this.getMatch.name,"required params "+o.yellow("`id/matchId` (int)")+" not passed in")}},{key:"getMatchlist",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=void 0===l?{queue:E.TEAM_BUILDER_RANKED_SOLO}:l,g=arguments[1];return this._verifyOptions(h,_.MATCHLIST.GET),Number.isInteger(n||r)?this._matchlistRequest({endUrl:"by-account/"+(n||r),region:i,options:h},g):Number.isInteger(s||a||u)?new Promise(function(t,n){return e.getSummoner({id:s,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId,region:i,options:h},g))})}):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId,region:i,options:h},g))})}):this._logError(this.getMatchlist.name,"required params "+o.yellow("`accountId/accId` (int)")+", "+o.yellow("`id/summonerId/playerId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRecentMatchlist",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?this._matchlistRequest({endUrl:"by-account/"+(n||r)+"/recent",region:i},l):Number.isInteger(s||a||u)?new Promise(function(t,n){return e.getSummoner({id:s,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId+"/recent",region:i},l))})}):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._matchlistRequest({endUrl:"by-account/"+s.accountId+"/recent",region:i},l))})}):this._logError(this.getRecentMatchlist.name,"required params "+o.yellow("`accountId/accId` (int)")+", "+o.yellow("`id/summonerId/playerId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getMatchTimeline",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.matchId,r=arguments[1];return Number.isInteger(i||n)?this._matchRequest({endUrl:"timelines/by-match/"+(i||n),region:t},r):this._logError(this.getMatchTimeline.name,"required params "+o.yellow("`id/matchId` (int)")+" not passed in")}},{key:"getRunes",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._runesMasteriesRequest({endUrl:"runes/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._runesMasteriesRequest({endUrl:"runes/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._runesMasteriesRequest({endUrl:"runes/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getRunes.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getMasteries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=arguments[1];return Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(l?l(n):s(n)):t(e._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+r.id,region:i},l))})}):Number.isInteger(s||a||u)?this._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+(s||a||u),region:i},l):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(l?l(r):n(r)):t(e._runesMasteriesRequest({endUrl:"masteries/by-summoner/"+s.id,region:i},l))})}):this._logError(this.getMasteries.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRankedStats",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=arguments[1];return this._verifyOptions(l,_.STATS.RANKED),Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(h?h(n):s(n)):t(e._statsRequest({endUrl:r.id+"/ranked",region:i,options:l},h))})}):Number.isInteger(s||a||u)?this._statsRequest({endUrl:(s||a||u)+"/ranked",region:i,options:l},h):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(h?h(r):n(r)):t(e._statsRequest({endUrl:s.id+"/ranked",region:i,options:l},h))})}):void this._logError(this.getRankedStats.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getStatsSummary",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.region,n=t.accountId,r=t.accId,s=t.id,a=t.summonerId,u=t.playerId,d=t.name,l=t.options,h=arguments[1];return this._verifyOptions(l,_.STATS.SUMMARY),Number.isInteger(n||r)?new Promise(function(t,s){return e.getSummoner({accId:n||r,region:i},function(n,r){return n?void(h?h(n):s(n)):t(e._statsRequest({endUrl:r.id+"/summary",region:i,options:l},h))})}):Number.isInteger(s||a||u)?this._statsRequest({endUrl:(s||a||u)+"/summary",region:i,options:l},h):"string"==typeof d?new Promise(function(t,n){return e.getSummoner({name:d,region:i},function(r,s){return r?void(h?h(r):n(r)):t(e._statsRequest({endUrl:s.id+"/summary",region:i,options:l},h))})}):void this._logError(this.getStatsSummary.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getSummoner",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,i=e.id,n=e.summonerId,r=e.playerId,s=e.accountId,a=e.accId,u=e.name,d=arguments[1];return Number.isInteger(i||n||r)?this._summonerRequest({endUrl:""+(i||n||r),region:t},d):"string"==typeof u?this._summonerRequest({endUrl:"by-name/"+this._sanitizeName(u),region:t},d):Number.isInteger(s||a)?this._summonerRequest({endUrl:"by-account/"+(s||a),region:t},d):this._logError(this.getSummoner.name,"required params "+o.yellow("`id/summonerId/playerId` (int)")+", "+o.yellow("`accountId/accId` (int)")+", or "+o.yellow("`name` (string)")+" not passed in")}},{key:"listChampions",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Champion.all({options:e,region:t},i)}},{key:"getChampionById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Champion.get({id:e,region:t},i)}},{key:"listFeaturedGames",value:function(e,t){return k(e)&&(t=e,e=void 0),this.FeaturedGames.get({region:e},t)}},{key:"listChallengers",value:function(e,t,i){return U(e)&&(k(t)&&(i=t,t=void 0),t=e,e=void 0),k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),this.League.challengers({queue:e,region:t},i)}},{key:"listMasters",value:function(e,t,i){return U(e)&&(k(t)&&(i=t,t=void 0),t=e,e=void 0),k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),this.League.masters({queue:e,region:t},i)}},{key:"getSummonerByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,accId:e},i)}},{key:"getSummonerById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,id:e},i)}},{key:"getSummonerByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Summoner.get({region:t,name:e},i)}},{key:"getMasteriesByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,accId:e},i)}},{key:"getMasteriesById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,id:e},i)}},{key:"getMasteriesByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Masteries.get({region:t,name:e},i)}},{key:"getMatchById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Match.get({region:t,id:e},i)}},{key:"getMatchlistByAccountId",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({accId:e,options:t,region:i},n)}},{key:"getMatchlistById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({id:e,options:t,region:i},n)}},{key:"getMatchlistByName",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Matchlist.get({name:e,options:t,region:i},n)}},{key:"getMatchTimelineById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Match.timeline({id:e,region:t},i)}},{key:"getRunesByAccountId",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,accId:e},i)}},{key:"getRunesById",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,id:e},i)}},{key:"getRunesByName",value:function(e,t,i){return k(t)&&(i=t,t=void 0),this.Runes.get({region:t,name:e},i)}},{key:"getStaticChampionList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.champions({region:t,options:e},i)}},{key:"getStaticChampionById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.champion({id:e,options:t,region:i},n)}},{key:"getStaticItemList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.items({options:e,region:t},i)}},{key:"getStaticItemById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.item({id:e,options:t,region:i},n)}},{key:"getStaticLanguageStringList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.languageStrings({options:e,region:t},i)}},{key:"getStaticLanguageList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.languages({region:e},t)}},{key:"getStaticMapList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.mapData({options:e,region:t},i)}},{key:"getStaticMasteryList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.masteries({options:e,region:t},i)}},{key:"getStaticMasteryById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.mastery({id:e,options:t,region:i},n)}},{key:"getStaticProfileIconList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.profileIcons({options:e,region:t},i)}},{key:"getStaticRealmList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.realm({region:e},t)}},{key:"getStaticRuneList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.runes({options:e,region:t},i)}},{key:"getStaticRuneById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.rune({id:e,options:t,region:i},n)}},{key:"getStaticSummonerSpellList",value:function(e,t,i){return k(e)&&(i=e,e=void 0),k(t)&&(i=t,t=void 0),"string"==typeof e&&(t=e,e=void 0),this.Static.spells({options:e,region:t},i)}},{key:"getStaticSummonerSpellById",value:function(e,t,i,n){return k(t)&&(n=t,t=void 0),k(i)&&(n=i,i=void 0),"string"==typeof t&&(i=t,t=void 0),this.Static.spell({id:e,options:t,region:i},n)}},{key:"getStaticVersionList",value:function(e,t){return k(e)&&(t=e,e=void 0),this.Static.versions({region:e},t)}}]),e}(),X={Kindred:V,CACHE_TYPES:I,LIMITS:S,QUEUE_STRINGS:T,QUEUE_TYPES:E,REGIONS:b,TIME_CONSTANTS:p,QuickStart:d,print:l};e.exports=X});
{
"name": "kindred-api",
"version": "2.0.58",
"version": "2.0.60",
"description": "Node.js League of Legends v3 API wrapper with built-in rate-limiting (enforced per region, burst/spread, follows retry headers), caching (in-memory, Redis), automatic retries, and parameter checking.",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -200,3 +200,3 @@ # Kindred

var QUEUES = KindredAPI.QUEUE_TYPES // numbers for match endpoints
var debug = true
var debug = true // // shows status code + url on request. enables showKey and showHeaders.
var k = KindredAPI.QuickStart('YOUR_KEY', REGIONS.NORTH_AMERICA, debug)

@@ -203,0 +203,0 @@ var Q_STRINGS = KindredAPI.QUEUE_STRINGS // strings for editor convenience

@@ -10,2 +10,4 @@ // This file maps endpoints to hard-coded string constants.

// TODO: champListData, itemListData and what not will become `tags` in the future
// Might add type-checking in the future

@@ -12,0 +14,0 @@ const VERSION = 'version' // string

@@ -1,13 +0,16 @@

const printResponseDebug = (response, statusMessage, reqUrl) => {
const printResponseDebug = (response, statusMessage, reqUrl, headers) => {
console.log(statusMessage, '@', reqUrl)
console.log({
'x-rate-limit-type': response.headers['x-rate-limit-type'],
'x-app-rate-limit-count': response.headers['x-app-rate-limit-count'],
'x-method-rate-limit-count': response.headers['x-method-rate-limit-count'],
'x-rate-limit-count': response.headers['x-rate-limit-count'],
'retry-after': response.headers['retry-after']
})
console.log()
if (headers) {
console.log({
'x-rate-limit-type': response.headers['x-rate-limit-type'],
'x-app-rate-limit-count': response.headers['x-app-rate-limit-count'],
'x-method-rate-limit-count': response.headers['x-method-rate-limit-count'],
'x-rate-limit-count': response.headers['x-rate-limit-count'],
'retry-after': response.headers['retry-after']
})
console.log()
}
}
export default printResponseDebug

@@ -39,3 +39,3 @@ const request = require('request')

key, defaultRegion = REGIONS.NORTH_AMERICA,
debug = false, showKey = false,
debug = false, showKey = false, showHeaders = false,
limits, spread,

@@ -63,2 +63,3 @@ cacheOptions, cacheTTL

this.showKey = showKey
this.showHeaders = showHeaders

@@ -105,2 +106,3 @@ if (!cacheOptions) {

/* MARK: API BINDINGS */
this.Champion = {

@@ -391,2 +393,3 @@ getChampions: this.getChamps.bind(this),

}
/* END MARK: API BINDINGS */
}

@@ -452,8 +455,6 @@

* @param {string} region; region string
* @param {boolean} staticReq; this is still needed for older urls that are not normalized
* @returns {string} a request url
*/
_makeUrl(query, region, staticReq) {
const mid = staticReq ? '' : `${region}/`
const oldPrefix = `api/lol/${mid}`
_makeUrl(query, region) {
const oldPrefix = `api/lol/${region}/`
const prefix = 'lol/'

@@ -513,8 +514,3 @@ const base = 'api.riotgames.com'

_constructFullUrl(reqUrl, key) {
return (
reqUrl + (reqUrl.lastIndexOf('?') === -1
? '?'
: '&'
) + `api_key=${key}`
)
return reqUrl + this._getAPISuffix(reqUrl, key)
}

@@ -552,2 +548,14 @@

/**
* Grabs API suffix. This may contain a key if present.
* @param {string} url; request url
* @param {string} key; api key
*/
_getAPISuffix(url, key) {
return (url.lastIndexOf('?') === -1
? '?'
: '&'
) + `api_key=${key ? key : ''}`
}
_baseRequest({

@@ -564,3 +572,4 @@ endUrl,

const postfix = stringifiedOpts ? '?' + stringifiedOpts : ''
const reqUrl = this._makeUrl(endUrl + postfix, region, staticReq)
const reqUrl = this._makeUrl(endUrl + postfix, region)
const displayUrl = reqUrl + this._getAPISuffix(reqUrl) // no key
const fullUrl = this._constructFullUrl(reqUrl, this.key)

@@ -570,3 +579,7 @@

if (data) {
if (this.debug) console.log(`${chalk.green('CACHE HIT')} ${fullUrl}`)
if (this.debug) {
const url = this.showKey ? fullUrl : reqUrl
console.log(`${chalk.green('CACHE HIT')} @ ${url}`)
}
var json = JSON.parse(data)

@@ -599,4 +612,4 @@ if (cb) return cb(err, json)

if (self.debug) {
const url = self.showKey ? fullUrl : reqUrl
printResponseDebug(response, responseMessage, chalk.yellow(url))
const url = self.showKey ? fullUrl : displayUrl
printResponseDebug(response, responseMessage, chalk.yellow(url), self.showHeaders)
}

@@ -645,4 +658,4 @@

if (self.debug) {
const url = self.showKey ? fullUrl : reqUrl
printResponseDebug(response, statusMessage, chalk.yellow(url))
const url = self.showKey ? fullUrl : displayUrl
printResponseDebug(response, statusMessage, chalk.yellow(url), self.showHeaders)
}

@@ -649,0 +662,0 @@

@@ -213,11 +213,22 @@ /* eslint-disable max-nested-callbacks */

it('should retry on 429s until all calls are successful and returned', function (done) {
// Mock call to rate limit
// Make sure to use dev key
init().Summoner.by.name('Contractz')
const api = require('../../dist/kindred-api')
// Begin
const k = init()
const debug = true
const LIMITS = api.LIMITS
const z = new api.Kindred({
key: process.env.KEY_TO_RATE_LIMIT,
limits: LIMITS.DEV
})
z.Summoner.get({ name: 'Contractz' }) // mock 429 causer
const k = new api.Kindred({
key: process.env.KEY_TO_RATE_LIMIT,
debug,
limits: LIMITS.DEV
})
function count(err, data) {
if (data) --num
if (data)--num
if (num === 0) done()

@@ -250,8 +261,20 @@ }

it('should retry on 429s until all calls are successful and returned', function (done) {
// Mock call to rate limit
// Make sure to use dev key
init().Summoner.by.name('Contractz')
const api = require('../../dist/kindred-api')
const k = init()
const debug = true
const LIMITS = api.LIMITS
const z = new api.Kindred({
key: process.env.KEY_TO_RATE_LIMIT,
limits: LIMITS.DEV
})
z.Summoner.get({ name: 'Contractz' }) // mock 429 causer
const k = new api.Kindred({
key: process.env.KEY_TO_RATE_LIMIT,
debug,
limits: LIMITS.DEV
})
let num = 10

@@ -313,2 +336,28 @@

describe('print response debug', function () {
it('should print text on cache hit', function (done) {
const api = require('../../dist/kindred-api')
const debug = true
const LIMITS = api.LIMITS
const k = new api.Kindred({
key: process.env.KEY,
debug,
limits: LIMITS.DEV,
cacheOptions: api.CACHE_TYPES[0]
})
k.CACHE_TIMERS = {
SUMMONER: 5000
}
k.Summoner
.get({ name: 'Contractz' })
.then(data => k.Summoner.get({ name: 'Contractz' }))
.then(data => {
expect(console.log).to.have.been.called
done()
})
})
it('should work with limits', function (done) {

@@ -348,2 +397,38 @@ const api = require('../../dist/kindred-api')

})
it('should print headers', function (done) {
const api = require('../../dist/kindred-api')
const debug = true
const showHeaders = true
const k = new api.Kindred({
key: process.env.KEY,
debug,
showHeaders
})
k.Static.Champion.list(function (err, data) {
sinon.assert.calledThrice(console.log)
done()
})
})
it('should not print headers', function (done) {
const api = require('../../dist/kindred-api')
const debug = true
const showHeaders = false
const k = new api.Kindred({
key: process.env.KEY,
debug,
showHeaders
})
k.Static.Champion.list(function (err, data) {
sinon.assert.calledOnce(console.log)
done()
})
})
})

@@ -350,0 +435,0 @@ })

# Task List
~ = in progress
- [ ] Change `champListData` and `runeListData` style query params to `tags`.
- [x] Right now, passing incorrect options (query params) doesn't throw any errors. Adding this feature would help reduce incomplete data from typos.

@@ -4,0 +5,0 @@ - [ ] Make promises retry more flexible (users can pass in time before retry, how many times they want it to keep going).

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc