kindred-api
Advanced tools
Comparing version 1.3.6 to 1.3.7
@@ -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 n={exports:{}};t(n,e.redis,e.doubleEndedQueue,e.xregexp,e.chalk,e.request,e.chalk,e.queryString),e.kindredApi=n.exports}}(this,function(e,t,n,i,r,s,o,a){"use strict";function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l="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},m=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),g=function(){function e(){u(this,e),this.cache={}}return m(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?Date.now()+1e3*e.ttl:null,value:t}}}]),e}(),h=function(){function e(n){u(this,e);var i=Object.assign({},n||{},{host:"127.0.0.1",port:6379,keyPrefix:"kindredAPI-"});this.client=t.createClient(i.port,i.host),this.client.on("error",function(e){console.log("Redis error:",e)}),process.on("exit",function(){console.log("closing"),this.client.quit()}),this.prefix=i.keyPrefix}return m(e,[{key:"get",value:function(e,t){this.client.get(this.prefix+e.key,function(e,n){n?t(e,n):t(e)})}},{key:"set",value:function(e,n){this.client.setex(this.prefix+e.key,1e3*e.ttl,n,t.print),console.log("set for "+1e3*e.ttl+" milliiseconds")}}]),e}(),d=function(){function e(t,i){u(this,e),this.allowedRequests=t,this.seconds=i,this.madeRequests=new n}return m(e,[{key:"__reload",value:function(){for(var e=(new Date).getTime();this.madeRequests.length>0&&e-this.madeRequests.peekFront()>=1e3*this.seconds;)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}(),c={MONTH:2592e3,WEEK:604800,DAY:846400,SIX_HOURS:21600,THREE_HOURS:10800,TWO_HOURS:7200,HOUR:3600,THIRTY_MINUTES:1800,SHORT:600,NONE:null},p={CHAMPION:c.MONTH,CHAMPION_MASTERY:c.SIX_HOURS,CURRENT_GAME:c.NONE,FEATURED_GAMES:c.NONE,GAME:c.HOUR,LEAGUE:c.SIX_HOURS,STATIC:c.MONTH,STATUS:c.NONE,MATCH:c.MONTH,MATCH_LIST:c.ONE_HOUR,RUNES_MASTERIES:c.WEEK,STATS:c.HOUR,SUMMONER:c.DAY},y={DEV:[[10,10],[500,600]],PROD:[[3e3,10],[18e4,600]]},v={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={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"},R={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"},S={CHAMPION:1.2,CURRENT_GAME:1,FEATURED_GAMES:1,GAME:1.3,LEAGUE:2.5,STATIC_DATA:1.2,STATUS:1,MATCH:2.2,MATCH_LIST:2.2,RUNES_MASTERIES:1.4,STATS:1.3,SUMMONER:1.4},I=["in-memory-cache","redis"],b=i("^[0-9\\p{L} _\\.]+$"),_={int:function(e){return e.every(function(e){return Number.isInteger(e)})},string:function(e){return e.every(function(e){return"string"==typeof e})}},E={int:function(e){return e&&Array.isArray(e)&&_.int(e)&&e.length>0},string:function(e){return e&&Array.isArray(e)&&_.string(e)&&e.length>0}},M=function(e){var t=!0,n=!1,i=void 0;try{for(var r,s=Object.keys(f)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;if(f[o]===e)return!0}}catch(e){n=!0,i=e}finally{try{!t&&s.return&&s.return()}finally{if(n)throw i}}return!1},q={400:"Bad Request",403:"Forbidden",404:"Not Found",415:"Unsupported Media Type",429:"Rate Limit Exceeded",500:"Internal Service Error",503:"Service Unavailable"},A=function(e){var t=q[e];if(t)return t},U=[200,400,500],T=function(e){return e>=U[0]&&e<=U[1]?r.green(e):e>=U[1]&&e<=U[2]?r.red(e+" "+A(e)):r.bold.red(e+" "+A(e))},D=function(e){return(Array.isArray(e)&&2!==e.length||!E.int(e[0])||2!==e[0].length||!E.int(e[1])||2!==e[1].length)&&"dev"!==e&&"prod"!==e},N=function(e,t,n){console.log(t,n),console.log({"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()},C=function(){function e(t){var n=t.key,i=t.defaultRegion,r=void 0===i?f.NORTH_AMERICA:i,s=t.debug,a=void 0!==s&&s,l=t.limits,m=t.cacheOptions,c=t.cacheTTL;if(u(this,e),this.key=n,this.defaultRegion=M(r)?r:void 0,this.defaultRegion||(console.log(""+o.red("Initialization of Kindred failed: "+o.yellow(r)+" is an invalid region.")),console.log(""+o.red("Try importing "+o.yellow("require('./dist/kindred-api').REGIONS")+" and using one of those values instead.")),process.exit(1)),this.debug=a,m?(m===I[0]?this.cache=new g:m===I[1]?this.cache=new h:this.cache=m,this.CACHE_TIMERS=c?c:p):this.cache={get:function(e,t){return t(null,null)},set:function(e,t){}},this.CACHE_TIMERS||(this.CACHE_TIMERS={CHAMPION:0,CHAMPION_MASTERY:0,CURRENT_GAME:0,FEATURED_GAMES:0,GAME:0,LEAGUE:0,STATIC:0,STATUS:0,MATCH:0,MATCH_LIST:0,RUNES_MASTERIES:0,STATS:0,SUMMONER:0}),l){D(l)&&(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 strings:")+" dev/prod "),console.log(""+o.red("and Kindred will set the limits appropriately.")),process.exit(1)),this.limits={},"dev"===l&&(l=y.DEV),"prod"===l&&(l=y.PROD);var v=!0,R=!1,S=void 0;try{for(var b,_=Object.keys(f)[Symbol.iterator]();!(v=(b=_.next()).done);v=!0){var E=b.value;this.limits[f[E]]=[new d(l[0][0],l[0][1]),new d(l[1][0],l[1][1])]}}catch(e){R=!0,S=e}finally{try{!v&&_.return&&_.return()}finally{if(R)throw S}}}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)},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),getTopChampions:this.getTopChamps.bind(this),top:this.getTopChamps.bind(this),best:this.getTopChamps.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)},this.Game={getRecentGames:this.getRecentGames.bind(this),getRecent:this.getRecentGames.bind(this),get:this.getRecentGames.bind(this)},this.League={getLeagues:this.getLeagues.bind(this),get:this.getLeagues.bind(this),getLeagueEntries:this.getLeagueEntries.bind(this),getEntries:this.getLeagueEntries.bind(this),entries:this.getLeagueEntries.bind(this),getChallengers:this.getChallengers.bind(this),challengers:this.getChallengers.bind(this),getMasters:this.getMasters.bind(this),masters:this.getMasters.bind(this)},this.Static={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),getMap:this.getMap.bind(this),map:this.getMap.bind(this),getMasteries:this.getMasteryList.bind(this),masteries:this.getMasteryList.bind(this),getMastery:this.getMastery.bind(this),mastery:this.getMastery.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),getShardList:this.getShardList.bind(this),getShards:this.getShardList.bind(this),getAll:this.getShardList.bind(this),all:this.getShardList.bind(this)},this.Match={getMatch:this.getMatch.bind(this),get:this.getMatch.bind(this)},this.MatchList={getMatchList:this.getMatchList.bind(this),get:this.getMatchList.bind(this)},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)},this.Masteries={get:this.getMasteries.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={getSummoners:this.getSummoners.bind(this),getAll:this.getSummoners.bind(this),all:this.getSummoners.bind(this),getSummoner:this.getSummoner.bind(this),get:this.getSummoner.bind(this),getSummonerNames:this.getSummonerNames.bind(this),getNames:this.getSummonerNames.bind(this),names:this.getSummonerNames.bind(this),getSummonerName:this.getSummonerName.bind(this),getName:this.getSummonerName.bind(this),name:this.getSummonerName.bind(this)}}return m(e,[{key:"canMakeRequest",value:function(e){return!(!this.limits[e][0].requestAvailable()||!this.limits[e][1].requestAvailable())}},{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."),process.exit(1)}},{key:"_validName",value:function(e){return b.test(e)}},{key:"_makeUrl",value:function(e,t,n,i,r,s){var o=n?"":t+"/";return"https://"+t+".api.riotgames.com/"+(i||r||s?"":"api/lol/"+o)+encodeURI(e)}},{key:"_baseRequest",value:function(e,t){var n=this,i=e.endUrl,r=e.region,u=void 0===r?this.defaultRegion:r,l=e.status,m=void 0!==l&&l,g=e.observerMode,h=void 0!==g&&g,d=e.staticReq,c=void 0!==d&&d,p=e.championMastery,y=void 0!==p&&p,v=e.options,f=void 0===v?{}:v,R=e.cacheParams,S=void 0===R?{}:R,I=function(){return new Promise(function(e,r){var l=c?"global":u,g=!0,d=!1,p=void 0;try{for(var v,R=Object.keys(f)[Symbol.iterator]();!(g=(v=R.next()).done);g=!0){var I=v.value;Array.isArray(f[I])&&(f[I]=f[I].join(","))}}catch(e){d=!0,p=e}finally{try{!g&&R.return&&R.return()}finally{if(d)throw p}}var b=a.stringify(f),_=b?"?"+b:"",E=n._makeUrl(i+_,l,c,m,h,y),M=E+(E.lastIndexOf("?")===-1?"?":"&")+"api_key="+n.key;n.cache.get({key:E},function(i,a){if(a){var l=JSON.parse(a);return t?t(i,l):e(l)}if(n.limits){var m=n;!function t(n){m.canMakeRequest(u)?(c||(m.limits[u][0].addRequest(),m.limits[u][1].addRequest()),s({url:M},function(i,s,a){if(s&&a){var u=s.statusCode,l=T(u);if(m.debug&&N(s,l,M),"function"==typeof n)return u>=500&&(m.debug&&console.log("!!! resending request !!!"),setTimeout(function(){t.bind(m)(n)},1e3)),429===u&&(m.debug&&console.log("!!! resending request !!!"),setTimeout(function(){t.bind(m)(n)},1e3*s.headers["retry-after"]+50)),u>=400?n(l+" : "+o.yellow(E)):(Number.isInteger(S.ttl)&&S.ttl>0&&m.cache.set({key:E,ttl:S.ttl},a),n(i,JSON.parse(a)));if(500===u)m.debug&&console.log("!!! resending promise request !!!"),setTimeout(function(){return r("retry")},1e3);else{if(429!==u)return i||u>=400?r("err:",i,u):(Number.isInteger(S.ttl)&&S.ttl>0&&m.cache.set({key:E,ttl:S.ttl},a),e(JSON.parse(a)));m.debug&&console.log("!!! resending promise request !!!"),setTimeout(function(){return r("retry")},1e3*s.headers["retry-after"]+50)}}else console.log(i,M)})):setTimeout(function(){t.bind(m)(n)},1e3)}(t)}else s({url:M},function(n,i,s){if(i){var a=i.statusCode,u=T(a);return m.debug&&N(i,u,M),"function"==typeof t?a>=400?t(u+" : "+o.yellow(E)):t(n,JSON.parse(s)):n?r("err:",n):e(JSON.parse(s))}console.log(n,E)})})})};return t?I():I().catch(I).catch(I).catch(I).then(function(e){return e})}},{key:"_observerRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.cacheParams;return this._baseRequest({endUrl:"observer-mode/rest/"+n,observerMode:!0,region:i,cacheParams:r},t)}},{key:"_championRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.CHAMPION+"/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION}},t)}},{key:"_championMasteryRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"championmastery/location/"+n,region:i,options:r,championMastery:!0,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION_MASTERY}},t)}},{key:"_currentGameRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.platformId;return this._observerRequest({endUrl:"consumer/getSpectatorGameInfo/"+r+"/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.CURRENT_GAME}},t)}},{key:"_featuredGamesRequest",value:function(e,t){var n=e.endUrl,i=e.region;e.platformId;return this._observerRequest({endUrl:""+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.FEATURED_GAMES}},t)}},{key:"_staticRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=void 0===i?this.defaultRegion:i,s=e.options;return this._baseRequest({endUrl:"static-data/"+r+"/v"+S.STATIC_DATA+"/"+n,staticReq:!0,region:r,options:s,cacheParams:{ttl:this.CACHE_TIMERS.STATIC}},t)}},{key:"_statusRequest",value:function(e,t){var n=e.endUrl,i=(e.region,e.options);return this._baseRequest({endUrl:"lol/status/v"+S.STATUS+"/"+n,status:!0,options:i,cacheParams:{ttl:this.CACHE_TIMERS.STATUS}},t)}},{key:"_gameRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._baseRequest({endUrl:"v"+S.GAME+"/game/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.GAME}},t)}},{key:"_leagueRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.LEAGUE+"/league/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.LEAGUE}},t)}},{key:"_matchRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.MATCH+"/match/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCH}},t)}},{key:"_matchListRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.MATCH_LIST+"/matchlist/by-summoner/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCH_LIST}},t)}},{key:"_runesMasteriesRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._summonerRequest({endUrl:n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.RUNES_MASTERIES}},t)}},{key:"_statsRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.STATS+"/stats/by-summoner/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATS}},t)}},{key:"_summonerRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._baseRequest({endUrl:"v"+S.SUMMONER+"/summoner/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.SUMMONER}},t)}},{key:"_logError",value:function(e,t){console.log(o.bold.yellow(e),o.red("request"),o.bold.red("FAILED")+o.red("; "+t))}},{key:"setRegion",value:function(e){this.defaultRegion=M(e)?e:void 0,console.log(""+o.red("setRegion() by Kindred failed: "+o.yellow(e)+" is an invalid region.")),console.log(""+o.red("Try importing "+o.yellow("require('./dist/kindred-api').REGIONS")+" and using one of those values instead.")),process.exit(1)}},{key:"getChamps",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._championRequest({endUrl:"champion",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getChamp",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.championID,r=arguments[1];return Number.isInteger(n)||Number.isInteger(i)?this._championRequest({endUrl:"champion/"+(n||i),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,n=void 0===t?this.defaultRegion:t,i=e.playerID,r=e.championID,s=e.options,a=arguments[1];if(Number.isInteger(i)&&Number.isInteger(r)){var u=v[R[n]];return this._championMasteryRequest({endUrl:u+"/player/"+i+"/champion/"+r,region:n,options:s},a)}return 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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/champions",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/champions",region:i},g))})})}return this._logError(this.getChampMasteries.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/score",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/score",region:i},g))})})}return this._logError(this.getTotalChampMasteryScore.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getTopChamps",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/topchampions",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/topchampions",region:i},g))})})}return this._logError(this.getTopChamps.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=arguments[1],g=v[R[i]];return Number.isInteger(r||s||a)?this._currentGameRequest({endUrl:""+(r||s||a),platformId:g,region:i},m):"object"===l(arguments[0])&&"string"==typeof u?new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(m?m(r):n(r)):t(e._currentGameRequest({endUrl:""+s[e._sanitizeName(u)].id,platformId:g,region:i},m))})}):this._logError(this.getCurrentGame.name,"required params "+o.yellow("`id/summonerID/playerID` (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,n=arguments[1];return this._featuredGamesRequest({endUrl:"featured",region:t},n=t?n:arguments[0])}},{key:"getRecentGames",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=arguments[1];return Number.isInteger(i||r||s)?this._gameRequest({endUrl:"by-summoner/"+(i||r||s)+"/recent",region:n},u):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(u?u(r):i(r)):t(e._gameRequest({endUrl:"by-summoner/"+s[e._sanitizeName(a)].id+"/recent",region:n},u))})}):this._logError(this.getRecentGames.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=t.options,c=arguments[1];return E.int(i||r||s)?this._leagueRequest({endUrl:"by-summoner/"+(i||r||s).join(","),region:n,options:d},c):Number.isInteger(i||a||r||u||s||m)?this._leagueRequest({endUrl:"by-summoner/"+(i||a||r||u||s||m),region:n,options:d},c):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(c?c(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._leagueRequest({endUrl:"by-summoner/"+o.join(","),region:n,options:d},c))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?this._logError(this.getLeagues.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){return r?void(c?c(r):i(r)):t(e._leagueRequest({endUrl:"by-summoner/"+s[e._sanitizeName(g||h)].id,region:n,options:d},c))})})}},{key:"getLeagueEntries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._leagueRequest({endUrl:"by-summoner/"+(i||r||s).join(",")+"/entry",region:n},d):Number.isInteger(i||a||r||u||s||m)?this._leagueRequest({endUrl:"by-summoner/"+(i||a||r||u||s||m)+"/entry",region:n},d):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(d?d(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._leagueRequest({endUrl:"by-summoner/"+o.join(",")+"/entry",region:n},d))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?void this._logError(this.getLeagueEntries.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){return r?void(d?d(r):i(r)):t(e._leagueRequest({endUrl:"by-summoner/"+s[e._sanitizeName(g||h)].id+"/entry",region:n},d))})})}},{key:"getChallengers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=void 0===n?{type:"RANKED_SOLO_5x5"}:n,r=arguments[1];return this._leagueRequest({endUrl:"challenger",region:t,options:i},r=2===arguments.length?r:arguments[0])}},{key:"getMasters",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=void 0===n?{type:"RANKED_SOLO_5x5"}:n,r=arguments[1];return this._leagueRequest({endUrl:"master",region:t,options:i},r=2===arguments.length?r:arguments[0])}},{key:"getChampionList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"champion",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getChampion",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.championID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"champion/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"item",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getItem",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.itemID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"item/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"language-strings",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getLanguages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._staticRequest({endUrl:"languages",region:t},n=t?n:arguments[0])}},{key:"getMap",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"map",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getMasteryList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"mastery",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.masteryID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"mastery/"+(n||i),region:t,options:r},s):this._logError(this.getMastery.name,"required params "+o.yellow("`id/masteryID` (int)")+" not passed in")}},{key:"getRealmData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._staticRequest({endUrl:"realm",region:t},n=t?n:arguments[0])}},{key:"getRuneList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"rune",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getRune",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.runeID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"rune/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"summoner-spell",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getSummonerSpell",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.spellID,r=e.summonerSpellID,s=e.options,a=arguments[1];return Number.isInteger(n||i||r)?this._staticRequest({endUrl:"summoner-spell/"+(n||i||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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"versions",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getShardStatus",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._statusRequest({endUrl:"shard",region:t},n=t?n:arguments[0])}},{key:"getShardList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._statusRequest({endUrl:"shards",region:t},n=t?n:arguments[0])}},{key:"getMatch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.matchID,r=e.options,s=void 0===r?{includeTimeline:!0}:r,a=arguments[1];return Number.isInteger(n||i)?this._matchRequest({endUrl:""+(n||i),region:t,options:s},a):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]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=t.options,m=void 0===u?{rankedQueues:"TEAM_BUILDER_RANKED_SOLO"}:u,g=arguments[1];return Number.isInteger(i||r||s)?this._matchListRequest({endUrl:""+(i||r||s),region:n,options:m},g):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(g?g(r):i(r)):t(e._matchListRequest({endUrl:""+s[e._sanitizeName(a)].id,region:n,options:m},g))})}):this._logError(this.getMatchList.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRunes",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._runesMasteriesRequest({endUrl:(i||r||s).join()+"/runes",region:n},d):Number.isInteger(i||a||r||u||s||m)?this._runesMasteriesRequest({endUrl:(i||a||r||u||s||m)+"/runes",region:n},d):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(d?d(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._runesMasteriesRequest({endUrl:o.join(",")+"/runes",region:n},d))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?this._logError(this.getRunes.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){ | ||
!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 n={exports:{}};t(n,e.redis,e.doubleEndedQueue,e.xregexp,e.chalk,e.request,e.chalk,e.queryString),e.kindredApi=n.exports}}(this,function(e,t,n,i,r,s,o,a){"use strict";function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l="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},m=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),g=function(){function e(){u(this,e),this.cache={}}return m(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?Date.now()+1e3*e.ttl:null,value:t}}}]),e}(),h=function(){function e(n){u(this,e);var i=Object.assign({},n||{},{host:"127.0.0.1",port:6379,keyPrefix:"kindredAPI-"});this.client=t.createClient(i.port,i.host),this.client.on("error",function(e){console.log("Redis error:",e)}),process.on("exit",function(){console.log("closing"),this.client.quit()}),this.prefix=i.keyPrefix}return m(e,[{key:"get",value:function(e,t){this.client.get(this.prefix+e.key,function(e,n){n?t(e,n):t(e)})}},{key:"set",value:function(e,n){this.client.setex(this.prefix+e.key,e.ttl,n,t.print),console.log("set for "+e.ttl+" seconds")}}]),e}(),d=function(){function e(t,i){u(this,e),this.allowedRequests=t,this.seconds=i,this.madeRequests=new n}return m(e,[{key:"__reload",value:function(){for(var e=(new Date).getTime();this.madeRequests.length>0&&e-this.madeRequests.peekFront()>=1e3*this.seconds;)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}(),c={MONTH:2592e3,WEEK:604800,DAY:846400,SIX_HOURS:21600,THREE_HOURS:10800,TWO_HOURS:7200,HOUR:3600,THIRTY_MINUTES:1800,SHORT:600,NONE:null},p={CHAMPION:c.MONTH,CHAMPION_MASTERY:c.SIX_HOURS,CURRENT_GAME:c.NONE,FEATURED_GAMES:c.NONE,GAME:c.HOUR,LEAGUE:c.SIX_HOURS,STATIC:c.MONTH,STATUS:c.NONE,MATCH:c.MONTH,MATCH_LIST:c.ONE_HOUR,RUNES_MASTERIES:c.WEEK,STATS:c.HOUR,SUMMONER:c.DAY},y={DEV:[[10,10],[500,600]],PROD:[[3e3,10],[18e4,600]]},v={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={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"},R={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"},S={CHAMPION:1.2,CURRENT_GAME:1,FEATURED_GAMES:1,GAME:1.3,LEAGUE:2.5,STATIC_DATA:1.2,STATUS:1,MATCH:2.2,MATCH_LIST:2.2,RUNES_MASTERIES:1.4,STATS:1.3,SUMMONER:1.4},I=["in-memory-cache","redis"],b=i("^[0-9\\p{L} _\\.]+$"),_={int:function(e){return e.every(function(e){return Number.isInteger(e)})},string:function(e){return e.every(function(e){return"string"==typeof e})}},E={int:function(e){return e&&Array.isArray(e)&&_.int(e)&&e.length>0},string:function(e){return e&&Array.isArray(e)&&_.string(e)&&e.length>0}},M=function(e){var t=!0,n=!1,i=void 0;try{for(var r,s=Object.keys(f)[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;if(f[o]===e)return!0}}catch(e){n=!0,i=e}finally{try{!t&&s.return&&s.return()}finally{if(n)throw i}}return!1},q={400:"Bad Request",403:"Forbidden",404:"Not Found",415:"Unsupported Media Type",429:"Rate Limit Exceeded",500:"Internal Service Error",503:"Service Unavailable"},A=function(e){var t=q[e];if(t)return t},U=[200,400,500],T=function(e){return e>=U[0]&&e<=U[1]?r.green(e):e>=U[1]&&e<=U[2]?r.red(e+" "+A(e)):r.bold.red(e+" "+A(e))},D=function(e){return(Array.isArray(e)&&2!==e.length||!E.int(e[0])||2!==e[0].length||!E.int(e[1])||2!==e[1].length)&&"dev"!==e&&"prod"!==e},N=function(e,t,n){console.log(t,n),console.log({"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()},C=function(){function e(t){var n=t.key,i=t.defaultRegion,r=void 0===i?f.NORTH_AMERICA:i,s=t.debug,a=void 0!==s&&s,l=t.limits,m=t.cacheOptions,c=t.cacheTTL;if(u(this,e),this.key=n,this.defaultRegion=M(r)?r:void 0,this.defaultRegion||(console.log(""+o.red("Initialization of Kindred failed: "+o.yellow(r)+" is an invalid region.")),console.log(""+o.red("Try importing "+o.yellow("require('./dist/kindred-api').REGIONS")+" and using one of those values instead.")),process.exit(1)),this.debug=a,m?(m===I[0]?this.cache=new g:m===I[1]?this.cache=new h:this.cache=m,this.CACHE_TIMERS=c?c:p):this.cache={get:function(e,t){return t(null,null)},set:function(e,t){}},this.CACHE_TIMERS||(this.CACHE_TIMERS={CHAMPION:0,CHAMPION_MASTERY:0,CURRENT_GAME:0,FEATURED_GAMES:0,GAME:0,LEAGUE:0,STATIC:0,STATUS:0,MATCH:0,MATCH_LIST:0,RUNES_MASTERIES:0,STATS:0,SUMMONER:0}),l){D(l)&&(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 strings:")+" dev/prod "),console.log(""+o.red("and Kindred will set the limits appropriately.")),process.exit(1)),this.limits={},"dev"===l&&(l=y.DEV),"prod"===l&&(l=y.PROD);var v=!0,R=!1,S=void 0;try{for(var b,_=Object.keys(f)[Symbol.iterator]();!(v=(b=_.next()).done);v=!0){var E=b.value;this.limits[f[E]]=[new d(l[0][0],l[0][1]),new d(l[1][0],l[1][1])]}}catch(e){R=!0,S=e}finally{try{!v&&_.return&&_.return()}finally{if(R)throw S}}}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)},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),getTopChampions:this.getTopChamps.bind(this),top:this.getTopChamps.bind(this),best:this.getTopChamps.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)},this.Game={getRecentGames:this.getRecentGames.bind(this),getRecent:this.getRecentGames.bind(this),get:this.getRecentGames.bind(this)},this.League={getLeagues:this.getLeagues.bind(this),get:this.getLeagues.bind(this),getLeagueEntries:this.getLeagueEntries.bind(this),getEntries:this.getLeagueEntries.bind(this),entries:this.getLeagueEntries.bind(this),getChallengers:this.getChallengers.bind(this),challengers:this.getChallengers.bind(this),getMasters:this.getMasters.bind(this),masters:this.getMasters.bind(this)},this.Static={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),getMap:this.getMap.bind(this),map:this.getMap.bind(this),getMasteries:this.getMasteryList.bind(this),masteries:this.getMasteryList.bind(this),getMastery:this.getMastery.bind(this),mastery:this.getMastery.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),getShardList:this.getShardList.bind(this),getShards:this.getShardList.bind(this),getAll:this.getShardList.bind(this),all:this.getShardList.bind(this)},this.Match={getMatch:this.getMatch.bind(this),get:this.getMatch.bind(this)},this.MatchList={getMatchList:this.getMatchList.bind(this),get:this.getMatchList.bind(this)},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)},this.Masteries={get:this.getMasteries.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={getSummoners:this.getSummoners.bind(this),getAll:this.getSummoners.bind(this),all:this.getSummoners.bind(this),getSummoner:this.getSummoner.bind(this),get:this.getSummoner.bind(this),getSummonerNames:this.getSummonerNames.bind(this),getNames:this.getSummonerNames.bind(this),names:this.getSummonerNames.bind(this),getSummonerName:this.getSummonerName.bind(this),getName:this.getSummonerName.bind(this),name:this.getSummonerName.bind(this)}}return m(e,[{key:"canMakeRequest",value:function(e){return!(!this.limits[e][0].requestAvailable()||!this.limits[e][1].requestAvailable())}},{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."),process.exit(1)}},{key:"_validName",value:function(e){return b.test(e)}},{key:"_makeUrl",value:function(e,t,n,i,r,s){var o=n?"":t+"/";return"https://"+t+".api.riotgames.com/"+(i||r||s?"":"api/lol/"+o)+encodeURI(e)}},{key:"_baseRequest",value:function(e,t){var n=this,i=e.endUrl,r=e.region,u=void 0===r?this.defaultRegion:r,l=e.status,m=void 0!==l&&l,g=e.observerMode,h=void 0!==g&&g,d=e.staticReq,c=void 0!==d&&d,p=e.championMastery,y=void 0!==p&&p,v=e.options,f=void 0===v?{}:v,R=e.cacheParams,S=void 0===R?{}:R,I=function(){return new Promise(function(e,r){var l=c?"global":u,g=!0,d=!1,p=void 0;try{for(var v,R=Object.keys(f)[Symbol.iterator]();!(g=(v=R.next()).done);g=!0){var I=v.value;Array.isArray(f[I])&&(f[I]=f[I].join(","))}}catch(e){d=!0,p=e}finally{try{!g&&R.return&&R.return()}finally{if(d)throw p}}var b=a.stringify(f),_=b?"?"+b:"",E=n._makeUrl(i+_,l,c,m,h,y),M=E+(E.lastIndexOf("?")===-1?"?":"&")+"api_key="+n.key;n.cache.get({key:E},function(i,a){if(a){var l=JSON.parse(a);return t?t(i,l):e(l)}if(n.limits){var m=n;!function t(n){m.canMakeRequest(u)?(c||(m.limits[u][0].addRequest(),m.limits[u][1].addRequest()),s({url:M},function(i,s,a){if(s&&a){var u=s.statusCode,l=T(u);if(m.debug&&N(s,l,M),"function"==typeof n)return u>=500&&(m.debug&&console.log("!!! resending request !!!"),setTimeout(function(){t.bind(m)(n)},1e3)),429===u&&(m.debug&&console.log("!!! resending request !!!"),setTimeout(function(){t.bind(m)(n)},1e3*s.headers["retry-after"]+50)),u>=400?n(l+" : "+o.yellow(E)):(Number.isInteger(S.ttl)&&S.ttl>0&&m.cache.set({key:E,ttl:S.ttl},a),n(i,JSON.parse(a)));if(500===u)m.debug&&console.log("!!! resending promise request !!!"),setTimeout(function(){return r("retry")},1e3);else{if(429!==u)return i||u>=400?r("err:",i,u):(Number.isInteger(S.ttl)&&S.ttl>0&&m.cache.set({key:E,ttl:S.ttl},a),e(JSON.parse(a)));m.debug&&console.log("!!! resending promise request !!!"),setTimeout(function(){return r("retry")},1e3*s.headers["retry-after"]+50)}}else console.log(i,M)})):setTimeout(function(){t.bind(m)(n)},1e3)}(t)}else s({url:M},function(n,i,s){if(i){var a=i.statusCode,u=T(a);return m.debug&&N(i,u,M),"function"==typeof t?a>=400?t(u+" : "+o.yellow(E)):t(n,JSON.parse(s)):n?r("err:",n):e(JSON.parse(s))}console.log(n,E)})})})};return t?I():I().catch(I).catch(I).catch(I).then(function(e){return e})}},{key:"_observerRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.cacheParams;return this._baseRequest({endUrl:"observer-mode/rest/"+n,observerMode:!0,region:i,cacheParams:r},t)}},{key:"_championRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.CHAMPION+"/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION}},t)}},{key:"_championMasteryRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"championmastery/location/"+n,region:i,options:r,championMastery:!0,cacheParams:{ttl:this.CACHE_TIMERS.CHAMPION_MASTERY}},t)}},{key:"_currentGameRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.platformId;return this._observerRequest({endUrl:"consumer/getSpectatorGameInfo/"+r+"/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.CURRENT_GAME}},t)}},{key:"_featuredGamesRequest",value:function(e,t){var n=e.endUrl,i=e.region;e.platformId;return this._observerRequest({endUrl:""+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.FEATURED_GAMES}},t)}},{key:"_staticRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=void 0===i?this.defaultRegion:i,s=e.options;return this._baseRequest({endUrl:"static-data/"+r+"/v"+S.STATIC_DATA+"/"+n,staticReq:!0,region:r,options:s,cacheParams:{ttl:this.CACHE_TIMERS.STATIC}},t)}},{key:"_statusRequest",value:function(e,t){var n=e.endUrl,i=(e.region,e.options);return this._baseRequest({endUrl:"lol/status/v"+S.STATUS+"/"+n,status:!0,options:i,cacheParams:{ttl:this.CACHE_TIMERS.STATUS}},t)}},{key:"_gameRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._baseRequest({endUrl:"v"+S.GAME+"/game/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.GAME}},t)}},{key:"_leagueRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.LEAGUE+"/league/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.LEAGUE}},t)}},{key:"_matchRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.MATCH+"/match/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCH}},t)}},{key:"_matchListRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.MATCH_LIST+"/matchlist/by-summoner/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.MATCH_LIST}},t)}},{key:"_runesMasteriesRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._summonerRequest({endUrl:n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.RUNES_MASTERIES}},t)}},{key:"_statsRequest",value:function(e,t){var n=e.endUrl,i=e.region,r=e.options;return this._baseRequest({endUrl:"v"+S.STATS+"/stats/by-summoner/"+n,region:i,options:r,cacheParams:{ttl:this.CACHE_TIMERS.STATS}},t)}},{key:"_summonerRequest",value:function(e,t){var n=e.endUrl,i=e.region;return this._baseRequest({endUrl:"v"+S.SUMMONER+"/summoner/"+n,region:i,cacheParams:{ttl:this.CACHE_TIMERS.SUMMONER}},t)}},{key:"_logError",value:function(e,t){console.log(o.bold.yellow(e),o.red("request"),o.bold.red("FAILED")+o.red("; "+t))}},{key:"setRegion",value:function(e){this.defaultRegion=M(e)?e:void 0,console.log(""+o.red("setRegion() by Kindred failed: "+o.yellow(e)+" is an invalid region.")),console.log(""+o.red("Try importing "+o.yellow("require('./dist/kindred-api').REGIONS")+" and using one of those values instead.")),process.exit(1)}},{key:"getChamps",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._championRequest({endUrl:"champion",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getChamp",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.championID,r=arguments[1];return Number.isInteger(n)||Number.isInteger(i)?this._championRequest({endUrl:"champion/"+(n||i),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,n=void 0===t?this.defaultRegion:t,i=e.playerID,r=e.championID,s=e.options,a=arguments[1];if(Number.isInteger(i)&&Number.isInteger(r)){var u=v[R[n]];return this._championMasteryRequest({endUrl:u+"/player/"+i+"/champion/"+r,region:n,options:s},a)}return 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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/champions",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/champions",region:i},g))})})}return this._logError(this.getChampMasteries.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/score",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/score",region:i},g))})})}return this._logError(this.getTotalChampMasteryScore.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getTopChamps",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=t.options,g=arguments[1];if(Number.isInteger(r||s||a)){var h=v[R[i]];return this._championMasteryRequest({endUrl:h+"/player/"+(r||s||a)+"/topchampions",region:i,options:m},g)}if("object"===l(arguments[0])&&"string"==typeof u){var d=v[R[i]];return new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(g?g(r):n(r)):t(e._championMasteryRequest({endUrl:d+"/player/"+s[e._sanitizeName(u)].id+"/topchampions",region:i},g))})})}return this._logError(this.getTopChamps.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=void 0===n?this.defaultRegion:n,r=t.id,s=t.summonerID,a=t.playerID,u=t.name,m=arguments[1],g=v[R[i]];return Number.isInteger(r||s||a)?this._currentGameRequest({endUrl:""+(r||s||a),platformId:g,region:i},m):"object"===l(arguments[0])&&"string"==typeof u?new Promise(function(t,n){return e.getSummoner({name:u,region:i},function(r,s){return r?void(m?m(r):n(r)):t(e._currentGameRequest({endUrl:""+s[e._sanitizeName(u)].id,platformId:g,region:i},m))})}):this._logError(this.getCurrentGame.name,"required params "+o.yellow("`id/summonerID/playerID` (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,n=arguments[1];return this._featuredGamesRequest({endUrl:"featured",region:t},n=t?n:arguments[0])}},{key:"getRecentGames",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=arguments[1];return Number.isInteger(i||r||s)?this._gameRequest({endUrl:"by-summoner/"+(i||r||s)+"/recent",region:n},u):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(u?u(r):i(r)):t(e._gameRequest({endUrl:"by-summoner/"+s[e._sanitizeName(a)].id+"/recent",region:n},u))})}):this._logError(this.getRecentGames.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=t.options,c=arguments[1];return E.int(i||r||s)?this._leagueRequest({endUrl:"by-summoner/"+(i||r||s).join(","),region:n,options:d},c):Number.isInteger(i||a||r||u||s||m)?this._leagueRequest({endUrl:"by-summoner/"+(i||a||r||u||s||m),region:n,options:d},c):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(c?c(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._leagueRequest({endUrl:"by-summoner/"+o.join(","),region:n,options:d},c))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?this._logError(this.getLeagues.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){return r?void(c?c(r):i(r)):t(e._leagueRequest({endUrl:"by-summoner/"+s[e._sanitizeName(g||h)].id,region:n,options:d},c))})})}},{key:"getLeagueEntries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._leagueRequest({endUrl:"by-summoner/"+(i||r||s).join(",")+"/entry",region:n},d):Number.isInteger(i||a||r||u||s||m)?this._leagueRequest({endUrl:"by-summoner/"+(i||a||r||u||s||m)+"/entry",region:n},d):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(d?d(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._leagueRequest({endUrl:"by-summoner/"+o.join(",")+"/entry",region:n},d))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?void this._logError(this.getLeagueEntries.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){return r?void(d?d(r):i(r)):t(e._leagueRequest({endUrl:"by-summoner/"+s[e._sanitizeName(g||h)].id+"/entry",region:n},d))})})}},{key:"getChallengers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=void 0===n?{type:"RANKED_SOLO_5x5"}:n,r=arguments[1];return this._leagueRequest({endUrl:"challenger",region:t,options:i},r=2===arguments.length?r:arguments[0])}},{key:"getMasters",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=void 0===n?{type:"RANKED_SOLO_5x5"}:n,r=arguments[1];return this._leagueRequest({endUrl:"master",region:t,options:i},r=2===arguments.length?r:arguments[0])}},{key:"getChampionList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"champion",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getChampion",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.championID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"champion/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"item",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getItem",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.itemID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"item/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"language-strings",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getLanguages",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._staticRequest({endUrl:"languages",region:t},n=t?n:arguments[0])}},{key:"getMap",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"map",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getMasteryList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"mastery",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getMastery",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.masteryID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"mastery/"+(n||i),region:t,options:r},s):this._logError(this.getMastery.name,"required params "+o.yellow("`id/masteryID` (int)")+" not passed in")}},{key:"getRealmData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._staticRequest({endUrl:"realm",region:t},n=t?n:arguments[0])}},{key:"getRuneList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"rune",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getRune",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.runeID,r=e.options,s=arguments[1];return Number.isInteger(n||i)?this._staticRequest({endUrl:"rune/"+(n||i),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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"summoner-spell",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getSummonerSpell",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.spellID,r=e.summonerSpellID,s=e.options,a=arguments[1];return Number.isInteger(n||i||r)?this._staticRequest({endUrl:"summoner-spell/"+(n||i||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,n=e.options,i=arguments[1];return this._staticRequest({endUrl:"versions",region:t,options:n},i=2===arguments.length?i:arguments[0])}},{key:"getShardStatus",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._statusRequest({endUrl:"shard",region:t},n=t?n:arguments[0])}},{key:"getShardList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=arguments[1];return this._statusRequest({endUrl:"shards",region:t},n=t?n:arguments[0])}},{key:"getMatch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.matchID,r=e.options,s=void 0===r?{includeTimeline:!0}:r,a=arguments[1];return Number.isInteger(n||i)?this._matchRequest({endUrl:""+(n||i),region:t,options:s},a):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]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=t.options,m=void 0===u?{rankedQueues:"TEAM_BUILDER_RANKED_SOLO"}:u,g=arguments[1];return Number.isInteger(i||r||s)?this._matchListRequest({endUrl:""+(i||r||s),region:n,options:m},g):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(g?g(r):i(r)):t(e._matchListRequest({endUrl:""+s[e._sanitizeName(a)].id,region:n,options:m},g))})}):this._logError(this.getMatchList.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (str)")+" not passed in")}},{key:"getRunes",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._runesMasteriesRequest({endUrl:(i||r||s).join()+"/runes",region:n},d):Number.isInteger(i||a||r||u||s||m)?this._runesMasteriesRequest({endUrl:(i||a||r||u||s||m)+"/runes",region:n},d):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(d?d(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._runesMasteriesRequest({endUrl:o.join(",")+"/runes",region:n},d))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?this._logError(this.getRunes.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){ | ||
return r?void(d?d(r):i(r)):t(e._runesMasteriesRequest({endUrl:s[e._sanitizeName(g||h)].id+"/runes",region:n},d))})})}},{key:"getMasteries",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._runesMasteriesRequest({endUrl:(i||r||s).join()+"/masteries",region:n},d):Number.isInteger(i||a||r||u||s||m)?this._runesMasteriesRequest({endUrl:(i||a||r||u||s||m)+"/masteries",region:n},d):E.string(g)?new Promise(function(t,i){return e.getSummoners({names:g,region:n},function(r,s){if(r)return void(d?d(r):i(r));var o=g.map(function(t){return s[e._sanitizeName(t)].id});return t(e._runesMasteriesRequest({endUrl:o.join(",")+"/masteries",region:n},d))})}):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?this._logError(this.getMasteries.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):new Promise(function(t,i){return e.getSummoner({name:g||h,region:n},function(r,s){return r?void(d?d(r):i(r)):t(e._runesMasteriesRequest({endUrl:s[e._sanitizeName(g||h)].id+"/masteries",region:n},d))})})}},{key:"getRankedStats",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=t.options,m=arguments[1];return Number.isInteger(i||r||s)?this._statsRequest({endUrl:(i||r||s)+"/ranked",region:n,options:u},m):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(m?m(r):i(r)):t(e._statsRequest({endUrl:s[e._sanitizeName(a)].id+"/ranked",region:n,options:u},m))})}):void this._logError(this.getRankedStats.name,"required params "+o.yellow("`id/summonerID/playerID` (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]:{},n=t.region,i=t.id,r=t.summonerID,s=t.playerID,a=t.name,u=t.options,m=arguments[1];return Number.isInteger(i||r||s)?this._statsRequest({endUrl:(i||r||s)+"/summary",region:n,options:u},m):"object"===l(arguments[0])&&"string"==typeof a?new Promise(function(t,i){return e.getSummoner({name:a,region:n},function(r,s){return r?void(m?m(r):i(r)):t(e._statsRequest({endUrl:s[e._sanitizeName(a)].id+"/summary",region:n,options:u},m))})}):void this._logError(this.getRankedStats.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getSummoners",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.region,i=t.ids,r=t.summonerIDs,s=t.playerIDs,a=t.id,u=t.summonerID,m=t.playerID,g=t.names,h=t.name,d=arguments[1];return E.int(i||r||s)?this._summonerRequest({endUrl:""+(i||r||s).join(","),region:n},d):Number.isInteger(i||a||r||u||s||m)?this._summonerRequest({endUrl:""+(i||a||r||u||s||m),region:n},d):E.string(g)?this._summonerRequest({endUrl:"by-name/"+g.map(function(t){return e._sanitizeName(t)}).join(","),region:n},d):"object"!==l(arguments[0])||"string"!=typeof g&&"string"!=typeof h?void this._logError(this.getSummoners.name,"required params "+o.yellow("`ids/summonerIDs/playerIDs` ([int]/int)")+", "+o.yellow("`id/summonerID/playerID` (int)")+", "+o.yellow("`names` ([str]/str)")+", or "+o.yellow("`name` (str)")+" not passed in"):this._summonerRequest({endUrl:"by-name/"+this._sanitizeName(g||h),region:n},d)}},{key:"getSummoner",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.summonerID,r=e.playerID,s=e.name,a=arguments[1];return Number.isInteger(n||i||r)?this.getSummoners({region:t,ids:[n||i||r]},a):"object"===l(arguments[0])&&"string"==typeof s?this.getSummoners({region:t,names:[s]},a):this._logError(this.getSummoner.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" or "+o.yellow("`name` (string)")+" not passed in")}},{key:"getSummonerNames",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.ids,i=e.summonerIDs,r=e.playerIDs,s=e.id,a=e.summonerID,u=e.playerID,l=arguments[1];return E.int(n||i||r)?this._summonerRequest({endUrl:(n||i||r).join(",")+"/name",region:t},l):Number.isInteger(n||s||i||a||r||u)?this._summonerRequest({endUrl:(n||s||i||a||r||u)+"/name",region:t},l):void this._logError(this.getSummonerNames.name,"required params "+o.yellow("required params `ids/summonerIDs/playerIDs` ([int]/int)")+" or "+o.yellow("`id/summonerID/playerID` (int)")+" not passed in")}},{key:"getSummonerName",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.region,n=e.id,i=e.summonerID,r=e.playerID,s=arguments[1];if(Number.isInteger(n))return this.getSummonerNames({region:t,id:n||i||r},s);this._logError(this.getSummonerName.name,"required params "+o.yellow("`id/summonerID/playerID` (int)")+" not passed in")}}]),e}(),k={Kindred:C,REGIONS:f,LIMITS:y,TIME_CONSTANTS:c,CACHE_TYPES:I};e.exports=k}); |
{ | ||
"name": "kindred-api", | ||
"version": "1.3.6", | ||
"version": "1.3.7", | ||
"description": "Kindred is a thin Node.js wrapper on top of Riot Games API for League of Legends", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
# Kindred | ||
Kindred is a Node.js wrapper with built-in rate-limiting (enforced per region), caching (Redis), and parameter checking on top of [Riot's League of Legends API](http://www.developer.riotgames.com). | ||
Kindred is a thin Node.js wrapper with built-in rate-limiting and caching on top of [Riot Games API for League of Legends](http://www.developer.riotgames.com). | ||
## Table of Contents | ||
@@ -10,3 +9,4 @@ * [Core Features](#core-features) | ||
* [Endpoints Covered](#endpoints-covered) | ||
* [Usage](#usage) | ||
* [Quickstart](#quickstart) | ||
* [Detailed Usage](#detailed-usage) | ||
* [Caching](#caching) | ||
@@ -23,15 +23,9 @@ * [Contributing and Issues](#contributing-and-issues) | ||
* Tells you what parameters you can pass in when you make a parameter-related error. | ||
* Built-in, flexible caching (in memory and redis). | ||
* Built-in, flexible caching (in-memory and redis). | ||
* Customized expiration timers. You can set a timer for each endpoint type. Refer to [Caching](#caching) for more info. | ||
* Designed to be simple but convenient. For example, you can call an exclusively by-id endpoint (grabbing the runes of a player) with just the name. | ||
Hopefully there aren't *too* many bugs! I'm currently focusing on refactoring the code now. | ||
## Philosophy | ||
My goal is to make a wrapper that is simple, sensible, and consistent. This project is heavily inspired by [psuedonym117's Python wrapper](https://github.com/pseudonym117/Riot-Watcher). Look at the [Usage Section](#usage) to see what I mean. | ||
This is my first try at making an API wrapper. I am open to any advice and help! | ||
***March 28, 2017*** | ||
**I'm pretty proud of the end result. The rate limiting isn't the best, but it does work and is enforced per region! Also, the method names are kinda iffy (minor inconsistencies), but it works really well for my other project and for when I need a quick script. I'll try to improve this library over the next few weeks.** | ||
## Installation | ||
@@ -149,9 +143,10 @@ ``` | ||
* Get challenger tier leagues. (REST) | ||
* getChallengers({ region, options = { type: 'RANKED_SOLO_5x5' } }, cb) | ||
* getChallengers({ region, options: { type: 'RANKED_SOLO_5x5' } }, cb) | ||
* Namespaced Functions: *League.getChallengers, League.challengers* | ||
* Example 1: ```k.League.challengers(rprint)``` | ||
* Example 2: ```k.League.challengers({ region: 'na' }, rprint)``` | ||
* Example 3: ```k.League.challengers({ options: { type: 'RANKED_FLEX_SR' } }, rprint)``` | ||
4. **/api/lol/{region}/v2.5/league/master** | ||
* Get master tier leagues. (REST) | ||
* getMasters({ region, options = { type: 'RANKED_SOLO_5x5' } }, cb) | ||
* getMasters({ region, options: { type: 'RANKED_SOLO_5x5' } }, cb) | ||
* Namespaced Functions: *League.getMasters, League.masters* | ||
@@ -243,5 +238,6 @@ * Example 1: ```k.League.masters().then(data => console.log(data))``` | ||
* Retrieve match by match ID. (REST) | ||
* getMatch({ region, id/matchID (int), options = { includeTimeline: true } }, cb) | ||
* getMatch({ region, id/matchID (int), options: { includeTimeline: true } }, cb) | ||
* Namespaced Functions: *Match.getMatch, Match.get* | ||
* Example 1: ```k.Match.get({ id: 1912829920 }, rprint)``` | ||
* Example 2: ```k.Match.get({ id: 1912829920, options: { includeTimeline: false } }, rprint)``` | ||
@@ -253,5 +249,6 @@ ### MatchList | ||
* Retrieve match list by match ID. (REST) | ||
* getMatchList({ region, id/summonerID/playerID (int), name (str), options = { rankedQueues: 'RANKED_SOLO_5x5' } }, cb) | ||
* getMatchList({ region, id/summonerID/playerID (int), name (str), options: { rankedQueues: 'RANKED_SOLO_5x5' } }, cb) | ||
* Namespaced Functions: *MatchList.getMatchList, MatchList.get* | ||
* Example 1: ```k.MatchList.get({ id: 20026563 }, rprint)``` | ||
* Example 2: ```k.MatchList.get({ id: 20026563, options: { rankedQueues: 'RANKED_FLEX_SR' } }, rprint)``` | ||
@@ -266,2 +263,3 @@ ### Runes Masteries | ||
* Example 1: ```k.RunesMasteries.runes({ id: 20026563 }, rprint)``` | ||
* Example 2: ```k.Runes.get({ id: 20026563 }, rprint)``` | ||
2. **/api/lol/{region}/v1.4/summoner/{summonerIds}/runes** | ||
@@ -272,2 +270,3 @@ * Retrieve match list by match ID. (REST) | ||
* Example 1: ```k.RunesMasteries.masteries({ id: 20026563 }, rprint)``` | ||
* Example 2: ```k.Masteries.get({ id: 20026563 }, rprint)``` | ||
@@ -282,2 +281,3 @@ ### Stats | ||
* Example 1: ```k.Stats.ranked({ id: 20026563 }, rprint)``` | ||
* Example 2: ```k.Stats.ranked({ id: 20026563, options: { season: 'SEASON2016' } }, function(err,data){})``` | ||
2. **/api/lol/{region}/v1.3/stats/by-summoner/{summonerId}/summary** | ||
@@ -316,4 +316,9 @@ * Get player stats summaries by summoner ID. (REST) | ||
## Usage | ||
## Quickstart | ||
Debug on, in-memory cache with default settings on | ||
```javascript | ||
``` | ||
## Detailed Usage | ||
```javascript | ||
@@ -335,3 +340,3 @@ var KindredAPI = require('kindred-api') | ||
To NOT use the built-in rate limiter, do NOT pass in anything | ||
into limits. | ||
into limits. Same if you don't want to use the cache (cacheOptions). | ||
*/ | ||
@@ -355,5 +360,32 @@ var k = new KindredAPI.Kindred({ | ||
/* | ||
NOTE: Making any form of parameter error will inform you | ||
what parameters you can pass in! | ||
The important thing about this wrapper is that it does not | ||
take in parameters the usual way. Instead, the only parameter, | ||
excluding the callback parameter, is an object of parameters. | ||
*/ | ||
k.Summoner.get({ id: 354959 }, rprint) | ||
k.Summoner.name({ id: 354959 }, rprint) | ||
k.Summoner.get({ id: 354959 }).then(data => console.log(data)) | ||
k.Match.get({ id: 2459973154, options: { | ||
includeTimeline: false | ||
}}, rprint) | ||
k.League.challengers({ region: 'na', options: { | ||
type: 'RANKED_FLEX_SR' | ||
}}, rprint) | ||
/* | ||
All functions essentially have the following form: | ||
functionName({ arg1, arg2... argN, options: {} }, optionalCallback) -> promise | ||
If a method does not have the `options` parameter within my code, that simply means | ||
there are no possible query parameters that you can pass in to that method. | ||
*/ | ||
/* | ||
Making any form of parameter error will inform you | ||
what parameters you can pass in so you hopefully | ||
don't have to refer to the documentation as much. | ||
*/ | ||
k.getSummoner(rprint) | ||
@@ -382,3 +414,3 @@ // getSummoners request FAILED; required params `ids` (array of ints), `id` (int), `names` (array of strings), or `name` (string) not passed in | ||
/* | ||
The first parameter of all endpoint methods will ALWAYS be an object. | ||
Let me reiterate: the first parameter of all endpoint methods will ALWAYS be an object. | ||
However, when the parameters are satisfied by default parameters and/or | ||
@@ -413,8 +445,5 @@ only have optional parameters, you can simply pass your callback in. | ||
*/ | ||
k.getSummoner({ id: 354959 }, rprint) | ||
k.Summoner.getSummoner({ id: 354959 }, rprint) | ||
k.Summoner.get({ id: 354959 }, rprint) | ||
k.Summoner.get({ id: 354959 }) | ||
.then(data => console.log(data)) | ||
.catch(err => console.error(err)) | ||
@@ -457,4 +486,4 @@ /* | ||
/* Every method has an optional 'region' parameter. */ | ||
var options = { name: 'sktt1peanut', region: REGIONS.KOREA } | ||
k.getSummoner(options, rprint) // peanut's data | ||
var params = { name: 'sktt1peanut', region: REGIONS.KOREA } | ||
k.getSummoner(params, rprint) // peanut's data | ||
@@ -545,4 +574,4 @@ /* Changing the default region! */ | ||
For example, the required parameter for many methods is 'type' (of queue). | ||
I made it so that the default is 'RANKED_SOLO_5x5' if 'type' is not passed | ||
in. | ||
I made it so that the default is 'RANKED_SOLO_5x5' (or 'TEAM_BUILDER_RANKED_SOLO') | ||
if 'type' is not passed in. | ||
*/ | ||
@@ -647,3 +676,3 @@ k.getChallengers({ region: 'na' }, rprint) // get challengers from ranked solo queue ladder | ||
limits: [ [10, 10], [500, 600] ], | ||
cacheOptions: CACHE_TYPES[0] // in-memory | ||
cacheOptions: CACHE_TYPES[0], // in-memory | ||
cacheTTL: { | ||
@@ -650,0 +679,0 @@ // All values in SECONDS. |
@@ -32,4 +32,4 @@ const redis = require('redis') | ||
set(args, value) { | ||
this.client.setex(this.prefix + args.key, args.ttl * 1000, value, redis.print) | ||
console.log('set for ' + args.ttl * 1000 + ' milliiseconds') | ||
this.client.setex(this.prefix + args.key, args.ttl, value, redis.print) | ||
console.log('set for ' + args.ttl + ' seconds') | ||
} | ||
@@ -36,0 +36,0 @@ } |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
363547
700