├── packages ├── api │ ├── shared │ ├── README.md │ ├── .nowignore │ ├── Dockerfile │ └── tsconfig.json ├── www │ ├── shared │ ├── components │ │ ├── Screenshots │ │ │ └── index.ts │ │ ├── CS │ │ │ ├── index.ts │ │ │ └── CS.tsx │ │ ├── KDA │ │ │ ├── index.ts │ │ │ └── KDA.tsx │ │ ├── Home │ │ │ └── index.ts │ │ ├── Item │ │ │ └── index.ts │ │ ├── Legal │ │ │ └── index.ts │ │ ├── Link │ │ │ ├── index.ts │ │ │ └── Link.tsx │ │ ├── Match │ │ │ └── index.ts │ │ ├── Perk │ │ │ └── index.ts │ │ ├── Spell │ │ │ └── index.ts │ │ ├── Tree │ │ │ └── index.ts │ │ ├── Trees │ │ │ └── index.ts │ │ ├── Champion │ │ │ └── index.ts │ │ ├── Features │ │ │ └── index.ts │ │ ├── Footer │ │ │ └── index.ts │ │ ├── Header │ │ │ └── index.ts │ │ ├── Landing │ │ │ └── index.ts │ │ ├── Matches │ │ │ ├── index.ts │ │ │ └── Matches.tsx │ │ ├── Parallax │ │ │ └── index.ts │ │ ├── TreeItem │ │ │ └── index.ts │ │ ├── Trophies │ │ │ └── index.ts │ │ ├── Trophy │ │ │ └── index.ts │ │ ├── TreeTrophy │ │ │ └── index.ts │ │ ├── SummonerInfo │ │ │ └── index.ts │ │ ├── TitleDivider │ │ │ └── index.ts │ │ ├── DownloadButton │ │ │ └── index.ts │ │ ├── LeaguePositions │ │ │ └── index.ts │ │ ├── SummonerSearch │ │ │ └── index.ts │ │ ├── DataPrivacyPolicy │ │ │ └── index.ts │ │ └── Summoner │ │ │ ├── index.ts │ │ │ └── typings.ts │ ├── .babelrc │ ├── static │ │ ├── garen.jpg │ │ ├── icon.png │ │ ├── logo.png │ │ ├── text.png │ │ ├── bg_big.jpg │ │ ├── discord.png │ │ ├── draven.jpg │ │ ├── favicon.ico │ │ ├── github.png │ │ ├── howling.jpg │ │ ├── twitter.png │ │ ├── bg_small.jpg │ │ ├── freljord.jpg │ │ ├── icon_gray.png │ │ ├── overwolf.png │ │ ├── leagues │ │ │ ├── gold_i.png │ │ │ ├── gold_ii.png │ │ │ ├── gold_iv.png │ │ │ ├── iron_i.png │ │ │ ├── iron_ii.png │ │ │ ├── iron_iv.png │ │ │ ├── master.png │ │ │ ├── bronze_i.png │ │ │ ├── bronze_ii.png │ │ │ ├── bronze_iv.png │ │ │ ├── diamond_i.png │ │ │ ├── gold_iii.png │ │ │ ├── iron_iii.png │ │ │ ├── master_i.png │ │ │ ├── master_ii.png │ │ │ ├── master_iv.png │ │ │ ├── silver_i.png │ │ │ ├── silver_ii.png │ │ │ ├── silver_iv.png │ │ │ ├── bronze_iii.png │ │ │ ├── challenger_i.png │ │ │ ├── diamond_ii.png │ │ │ ├── diamond_iii.png │ │ │ ├── diamond_iv.png │ │ │ ├── master_iii.png │ │ │ ├── platinum_i.png │ │ │ ├── platinum_ii.png │ │ │ ├── platinum_iii.png │ │ │ ├── platinum_iv.png │ │ │ ├── provisional_.png │ │ │ ├── silver_iii.png │ │ │ ├── challenger_ii.png │ │ │ ├── challenger_iii.png │ │ │ ├── challenger_iv.png │ │ │ ├── grandmaster_i.png │ │ │ ├── grandmaster_ii.png │ │ │ ├── grandmaster_iv.png │ │ │ └── grandmaster_iii.png │ │ ├── screenshots │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ └── 5.jpg │ │ ├── backgrounds │ │ │ ├── gun-metal.png │ │ │ ├── cartographer.png │ │ │ └── dark-mosaic.png │ │ └── fonts │ │ │ ├── roboto-v18-latin-300.woff │ │ │ ├── roboto-v18-latin-500.woff │ │ │ ├── roboto-v18-latin-300.woff2 │ │ │ ├── roboto-v18-latin-500.woff2 │ │ │ ├── roboto-v18-latin-regular.woff │ │ │ └── roboto-v18-latin-regular.woff2 │ ├── pages │ │ ├── legal.tsx │ │ ├── index.tsx │ │ ├── privacy.tsx │ │ └── match.tsx │ ├── Dockerfile │ ├── next.config.js │ ├── tsconfig.json │ ├── utilities │ │ └── matomo │ │ │ └── index.ts │ └── README.md ├── creator │ ├── shared │ ├── README.md │ ├── .babelrc │ ├── next-env.d.ts │ ├── types │ │ └── index.ts │ ├── api │ │ ├── getItems.ts │ │ ├── getChampions.ts │ │ ├── getChampion.ts │ │ ├── getSummonerSpells.ts │ │ ├── getReforgedRunePaths.ts │ │ └── getRange.ts │ ├── components │ │ ├── Header.tsx │ │ └── LoadMatch.tsx │ ├── layouts │ │ └── Page.tsx │ └── tsconfig.json ├── app │ ├── .meteor │ │ ├── .gitignore │ │ ├── release │ │ ├── platforms │ │ ├── .id │ │ └── .finished-upgraders │ ├── imports │ │ ├── api │ │ │ ├── status │ │ │ │ ├── index.js │ │ │ │ ├── collections │ │ │ │ │ ├── index.js │ │ │ │ │ └── _riotApiStatus.js │ │ │ │ └── server │ │ │ │ │ ├── jobs │ │ │ │ │ └── index.js │ │ │ │ │ └── publications │ │ │ │ │ ├── index.js │ │ │ │ │ └── _riotApiStatus.js │ │ │ ├── trees │ │ │ │ └── server │ │ │ │ │ └── methods.js │ │ │ ├── matchup │ │ │ │ ├── server │ │ │ │ │ ├── index.js │ │ │ │ │ └── _methods.js │ │ │ │ └── helpers │ │ │ │ │ ├── index.js │ │ │ │ │ └── _identifier.js │ │ │ ├── trophies │ │ │ │ ├── index.js │ │ │ │ └── helpers.js │ │ │ ├── riot-api │ │ │ │ ├── version.js │ │ │ │ └── regions.js │ │ │ ├── patreon │ │ │ │ ├── index.js │ │ │ │ └── _rewards.js │ │ │ ├── summoner-stats │ │ │ │ └── definitions │ │ │ │ │ ├── index.js │ │ │ │ │ └── summoners-rift │ │ │ │ │ ├── index.js │ │ │ │ │ ├── maximum │ │ │ │ │ ├── _sr_maxGold.js │ │ │ │ │ ├── _sr_maxKills.js │ │ │ │ │ ├── _sr_maxAssists.js │ │ │ │ │ ├── _sr_maxCs.js │ │ │ │ │ ├── _sr_maxTotalHeal.js │ │ │ │ │ ├── _sr_maxGoldPerMin.js │ │ │ │ │ ├── _sr_maxVisionScore.js │ │ │ │ │ ├── _sr_maxCsPerMin.js │ │ │ │ │ ├── _sr_maxGameDuration.js │ │ │ │ │ ├── _sr_maxKillsPerMin.js │ │ │ │ │ ├── _sr_maxKillingSpree.js │ │ │ │ │ ├── _sr_maxAssistPerMin.js │ │ │ │ │ ├── _sr_maxTotalHealPerMin.js │ │ │ │ │ ├── _sr_maxDamageToChampions.js │ │ │ │ │ ├── _sr_maxVisionScorePerMin.js │ │ │ │ │ ├── _sr_maxDamageTanked.js │ │ │ │ │ ├── _sr_maxLongestTimeSpentLiving.js │ │ │ │ │ ├── _sr_maxKillParticipations.js │ │ │ │ │ ├── _sr_maxTotalDamageToObjectives.js │ │ │ │ │ ├── _sr_maxDamageTankedPerMin.js │ │ │ │ │ ├── _sr_maxDamageToChampionsPerMinute.js │ │ │ │ │ ├── _sr_maxKillParticipationsPerMin.js │ │ │ │ │ └── _sr_maxTotalDamageToObjectivesPerMin.js │ │ │ │ │ ├── streaks │ │ │ │ │ ├── _sr_streakWin.js │ │ │ │ │ ├── _sr_streakLoss.js │ │ │ │ │ ├── _sr_streakMostKills.js │ │ │ │ │ ├── _sr_streakFirstBlood.js │ │ │ │ │ ├── _sr_streakMostCs.js │ │ │ │ │ ├── _sr_streakLeastDeaths.js │ │ │ │ │ ├── _sr_streakTrophyHunt.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── _sr_streakHighestDamageToChampions.js │ │ │ │ │ └── earliest │ │ │ │ │ ├── _sr_earliestKill.js │ │ │ │ │ ├── _sr_earliestBaron.js │ │ │ │ │ ├── _sr_earliestDragon.js │ │ │ │ │ ├── _sr_earliestLevel18.js │ │ │ │ │ ├── _sr_earliestElderDragon.js │ │ │ │ │ ├── _sr_earliestFirstTurret.js │ │ │ │ │ ├── _sr_earliestTrophyHunt.js │ │ │ │ │ ├── _sr_earliestWin.js │ │ │ │ │ └── index.js │ │ │ ├── ranking │ │ │ │ ├── server │ │ │ │ │ ├── index.js │ │ │ │ │ ├── _calculateTournamentPoints.js │ │ │ │ │ └── _calculateSeasonPoints.js │ │ │ │ └── seasons.js │ │ │ ├── jobs │ │ │ │ ├── server │ │ │ │ │ └── security.js │ │ │ │ └── jobs.js │ │ │ ├── settings │ │ │ │ └── tabs.js │ │ │ ├── utilities │ │ │ │ └── safeParseInt.js │ │ │ ├── features │ │ │ │ └── definitions │ │ │ │ │ ├── wins.js │ │ │ │ │ ├── kills.js │ │ │ │ │ ├── games.js │ │ │ │ │ ├── deaths.js │ │ │ │ │ ├── assists.js │ │ │ │ │ ├── maxGold.js │ │ │ │ │ ├── maxKills.js │ │ │ │ │ ├── winStreak.js │ │ │ │ │ ├── maxCrit.js │ │ │ │ │ ├── maxMinions.js │ │ │ │ │ ├── mostKPStreak.js │ │ │ │ │ ├── mostJnglCSStreak.js │ │ │ │ │ ├── largestKillingSpree.js │ │ │ │ │ ├── trophyHuntStreak.js │ │ │ │ │ ├── mostDestructsStreak.js │ │ │ │ │ ├── mostCSStreak.js │ │ │ │ │ ├── mostKillsStreak.js │ │ │ │ │ ├── mostDeathsStreak.js │ │ │ │ │ ├── firstBloodStreak.js │ │ │ │ │ ├── leastDeathsStreak.js │ │ │ │ │ ├── mostDamageStreak.js │ │ │ │ │ ├── mostVisionScoreStreak.js │ │ │ │ │ ├── leastVisionScoreStreak.js │ │ │ │ │ └── firstTurretPartStreak.js │ │ │ ├── twitch-api │ │ │ │ └── server │ │ │ │ │ └── publications.js │ │ │ ├── alerts │ │ │ │ └── server │ │ │ │ │ └── methods.js │ │ │ ├── playstyles │ │ │ │ ├── definitions │ │ │ │ │ └── unknown.js │ │ │ │ └── calculatePlaystyle.js │ │ │ ├── notifications │ │ │ │ └── server │ │ │ │ │ └── publications.js │ │ │ ├── overwolf │ │ │ │ └── normalizeRegion.js │ │ │ ├── badges │ │ │ │ └── definitions │ │ │ │ │ └── index.js │ │ │ ├── attributes │ │ │ │ ├── calculateAttributes.js │ │ │ │ ├── updateAttributes.js │ │ │ │ └── attributes.js │ │ │ ├── server-stats │ │ │ │ └── server │ │ │ │ │ └── collection.js │ │ │ └── trophy-hunters │ │ │ │ └── server │ │ │ │ └── methods │ │ │ │ ├── readChangelog.js │ │ │ │ └── _getTrophyHunterByName.js │ │ ├── shared │ │ ├── ui │ │ │ ├── components │ │ │ │ ├── Help │ │ │ │ │ ├── index.js │ │ │ │ │ └── Help.stories.js │ │ │ │ ├── Items │ │ │ │ │ ├── index.js │ │ │ │ │ └── Items.stories.js │ │ │ │ ├── Level │ │ │ │ │ ├── index.js │ │ │ │ │ └── Level.stories.js │ │ │ │ ├── Perk │ │ │ │ │ ├── index.js │ │ │ │ │ └── Perk.stories.js │ │ │ │ ├── Rank │ │ │ │ │ ├── index.js │ │ │ │ │ ├── Rank.stories.js │ │ │ │ │ └── Rank.js │ │ │ │ ├── Role │ │ │ │ │ └── index.ts │ │ │ │ ├── Tree │ │ │ │ │ ├── index.js │ │ │ │ │ └── Tree.stories.js │ │ │ │ ├── Trees │ │ │ │ │ ├── index.js │ │ │ │ │ └── Trees.stories.js │ │ │ │ ├── Badges │ │ │ │ │ ├── index.js │ │ │ │ │ └── Badges.stories.js │ │ │ │ ├── Content │ │ │ │ │ ├── index.js │ │ │ │ │ └── Content.stories.js │ │ │ │ ├── Friends │ │ │ │ │ ├── index.js │ │ │ │ │ └── Friends.stories.js │ │ │ │ ├── Heatmap │ │ │ │ │ ├── index.js │ │ │ │ │ └── Heatmap.stories.js │ │ │ │ ├── HelpBox │ │ │ │ │ ├── index.js │ │ │ │ │ └── HelpBox.stories.js │ │ │ │ ├── Matches │ │ │ │ │ ├── index.js │ │ │ │ │ └── Matches.stories.js │ │ │ │ ├── Profile │ │ │ │ │ ├── index.js │ │ │ │ │ └── Profile.stories.js │ │ │ │ ├── Ranking │ │ │ │ │ ├── index.js │ │ │ │ │ └── Ranking.stories.js │ │ │ │ ├── Spells │ │ │ │ │ ├── index.js │ │ │ │ │ └── Spells.stories.js │ │ │ │ ├── Status │ │ │ │ │ ├── index.js │ │ │ │ │ └── Status.stories.js │ │ │ │ ├── Trophy │ │ │ │ │ ├── index.js │ │ │ │ │ └── Trophy.stories.js │ │ │ │ ├── Twitch │ │ │ │ │ └── index.js │ │ │ │ ├── Update │ │ │ │ │ ├── index.js │ │ │ │ │ └── Update.stories.js │ │ │ │ ├── pre-match │ │ │ │ │ └── helpers │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── getRole.js │ │ │ │ ├── ActionMap │ │ │ │ │ ├── index.js │ │ │ │ │ └── ActionMap.stories.js │ │ │ │ ├── BuildOrder │ │ │ │ │ └── index.js │ │ │ │ ├── Changelog │ │ │ │ │ ├── index.js │ │ │ │ │ └── Changelog.stories.js │ │ │ │ ├── LiveMatch │ │ │ │ │ ├── index.js │ │ │ │ │ └── boxes │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── _MatchupBox.js │ │ │ │ │ │ └── _GeneralBox.js │ │ │ │ ├── LotteryWin │ │ │ │ │ ├── index.js │ │ │ │ │ └── LotteryWin.stories.js │ │ │ │ ├── Navigation │ │ │ │ │ ├── index.js │ │ │ │ │ └── Navigation.stories.js │ │ │ │ ├── Settings │ │ │ │ │ ├── index.js │ │ │ │ │ └── Settings.stories.js │ │ │ │ ├── SkillOrder │ │ │ │ │ ├── index.js │ │ │ │ │ └── SkillOrder.stories.js │ │ │ │ ├── Timeline │ │ │ │ │ ├── index.js │ │ │ │ │ └── Timeline.stories.js │ │ │ │ ├── TreeItem │ │ │ │ │ ├── index.js │ │ │ │ │ └── TreeItem.stories.js │ │ │ │ ├── TreeTrophy │ │ │ │ │ ├── index.js │ │ │ │ │ └── TreeTrophy.stories.js │ │ │ │ ├── ActiveQuests │ │ │ │ │ ├── index.js │ │ │ │ │ └── ActiveQuests.stories.js │ │ │ │ ├── AllTrophies │ │ │ │ │ ├── index.js │ │ │ │ │ └── AllTrophies.stories.js │ │ │ │ ├── RiotVersion │ │ │ │ │ ├── index.js │ │ │ │ │ └── RiotVersion.stories.js │ │ │ │ ├── TreeComplete │ │ │ │ │ ├── index.js │ │ │ │ │ └── TreeComplete.stories.js │ │ │ │ ├── TreeTrophies │ │ │ │ │ ├── index.js │ │ │ │ │ └── TreeTrophies.stories.js │ │ │ │ ├── TrophyHunter │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophyHunter.stories.js │ │ │ │ ├── TrophyStats │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophyStats.stories.js │ │ │ │ ├── BannedChampions │ │ │ │ │ ├── index.js │ │ │ │ │ └── BannedChampions.stories.js │ │ │ │ ├── ErrorBoundary │ │ │ │ │ ├── index.js │ │ │ │ │ └── ErrorBoundary.stories.js │ │ │ │ ├── FollowersChip │ │ │ │ │ ├── index.js │ │ │ │ │ └── FollowersChip.stories.js │ │ │ │ ├── HoverableBorder │ │ │ │ │ ├── index.js │ │ │ │ │ └── HoverableBorder.stories.js │ │ │ │ ├── Notifications │ │ │ │ │ ├── index.js │ │ │ │ │ └── Notifications.stories.js │ │ │ │ ├── ReforgedModal │ │ │ │ │ └── index.js │ │ │ │ ├── SettingsDialog │ │ │ │ │ ├── index.js │ │ │ │ │ └── SettingsDialog.stories.js │ │ │ │ ├── SummonerLevel │ │ │ │ │ ├── index.js │ │ │ │ │ ├── SummonerLevel.js │ │ │ │ │ └── SummonerLevel.stories.js │ │ │ │ ├── generic │ │ │ │ │ ├── _Chip.js │ │ │ │ │ ├── _List.js │ │ │ │ │ ├── _Badge.js │ │ │ │ │ ├── _Styles.js │ │ │ │ │ ├── _Switch.js │ │ │ │ │ ├── Button.js │ │ │ │ │ ├── Select.js │ │ │ │ │ ├── _Popover.js │ │ │ │ │ ├── _SvgIcon.js │ │ │ │ │ ├── Tooltip.js │ │ │ │ │ ├── _Checkbox.js │ │ │ │ │ ├── _Snackbar.js │ │ │ │ │ ├── _Subheader.js │ │ │ │ │ ├── _TextField.js │ │ │ │ │ ├── _Toolbar.js │ │ │ │ │ ├── MenuItem.js │ │ │ │ │ ├── _SelectField.js │ │ │ │ │ ├── _Card.js │ │ │ │ │ ├── _DropDownMenu.js │ │ │ │ │ ├── _Progress.js │ │ │ │ │ ├── _Typography.js │ │ │ │ │ ├── _RadioButton.js │ │ │ │ │ ├── _CircularProgress.js │ │ │ │ │ ├── CircularProgress.js │ │ │ │ │ ├── _Menu.js │ │ │ │ │ ├── _Grid.js │ │ │ │ │ ├── _Avatar.js │ │ │ │ │ ├── Dialog.stories.js │ │ │ │ │ ├── _BoxContent.js │ │ │ │ │ └── _BoxTitle.js │ │ │ │ ├── AvatarWithStatus │ │ │ │ │ ├── index.js │ │ │ │ │ └── AvatarWithStatus.stories.js │ │ │ │ ├── ConnectionStatus │ │ │ │ │ ├── index.js │ │ │ │ │ └── ConnectionStatus.stories.js │ │ │ │ ├── DamageComposition │ │ │ │ │ ├── index.js │ │ │ │ │ └── DamageComposition.stories.js │ │ │ │ ├── TrophiesObtained │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophiesObtained.stories.js │ │ │ │ ├── TrophyHunterName │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophyHunterName.stories.js │ │ │ │ ├── icons │ │ │ │ │ ├── Add.js │ │ │ │ │ ├── Pause.js │ │ │ │ │ ├── Remove.js │ │ │ │ │ ├── Forward.js │ │ │ │ │ ├── Refresh.js │ │ │ │ │ ├── FastForward.js │ │ │ │ │ ├── FastRewind.js │ │ │ │ │ └── PlayArrow.js │ │ │ │ ├── CustomTreeSelector │ │ │ │ │ ├── index.js │ │ │ │ │ └── CustomTreeSelector.stories.js │ │ │ │ ├── OnlineTrophyHunters │ │ │ │ │ ├── index.js │ │ │ │ │ └── OnlineTrophyHunters.stories.js │ │ │ │ ├── TimelineParticipant │ │ │ │ │ ├── index.js │ │ │ │ │ └── TimelineParticipant.stories.js │ │ │ │ ├── TrophyHunterAvatar │ │ │ │ │ ├── index.js │ │ │ │ │ ├── TrophyHunterAvatar.stories.js │ │ │ │ │ └── TrophyHunterAvatar.js │ │ │ │ ├── TrophyHunterPopover │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophyHunterPopover.stories.js │ │ │ │ ├── TrophyHunterAutoComplete │ │ │ │ │ ├── index.js │ │ │ │ │ └── TrophyHunterAutoComplete.stories.js │ │ │ │ ├── patreon │ │ │ │ │ ├── Patreon.stories.js │ │ │ │ │ └── PatreonAccount.js │ │ │ │ ├── sidebar │ │ │ │ │ └── Sidebar.stories.js │ │ │ │ ├── store │ │ │ │ │ ├── AvatarItem.stories.js │ │ │ │ │ ├── TwitchItem.stories.js │ │ │ │ │ ├── YouTubeItem.stories.js │ │ │ │ │ ├── FeedbackItem.stories.js │ │ │ │ │ ├── ReferrerItem.stories.js │ │ │ │ │ ├── StreamOverlayItem.stories.js │ │ │ │ │ └── TShirtArtworkItem.stories.js │ │ │ │ └── playstyle │ │ │ │ │ └── Playstyle.stories.js │ │ │ ├── pages │ │ │ │ ├── LiveMatch │ │ │ │ │ ├── index.js │ │ │ │ │ └── LiveMatch.stories.js │ │ │ │ ├── home │ │ │ │ │ ├── Home.js │ │ │ │ │ └── Home.stories.js │ │ │ │ ├── match │ │ │ │ │ └── Match.stories.js │ │ │ │ ├── items │ │ │ │ │ └── ItemsPage.stories.js │ │ │ │ ├── login │ │ │ │ │ └── LoginPage.stories.js │ │ │ │ └── ranking │ │ │ │ │ └── RankingPage.stories.js │ │ │ └── layouts │ │ │ │ ├── AppLayout.stories.js │ │ │ │ └── OverlayLayout.stories.js │ │ ├── startup │ │ │ ├── app │ │ │ │ ├── client │ │ │ │ │ └── register-api.js │ │ │ │ ├── server │ │ │ │ │ ├── hostname.js │ │ │ │ │ └── index.js │ │ │ │ ├── overlay.js │ │ │ │ └── live.js │ │ │ ├── server │ │ │ │ ├── colors.js │ │ │ │ ├── mongo.js │ │ │ │ └── process.js │ │ │ ├── client │ │ │ │ └── errors.js │ │ │ └── withRouteParams.js │ │ └── store │ │ │ ├── actions │ │ │ ├── _uiStates.js │ │ │ ├── _encyclopedia.js │ │ │ ├── index.js │ │ │ ├── _helpers.js │ │ │ └── _connectionStatus.js │ │ │ └── reducers │ │ │ ├── _helpers.js │ │ │ ├── _uiStates.js │ │ │ ├── _connectionStatus.js │ │ │ ├── _encyclopedia.js │ │ │ └── _account.js │ ├── .meteorignore │ ├── Dockerfile │ ├── client │ │ ├── index.js │ │ └── index.html │ ├── packages │ │ ├── user-presence │ │ │ ├── .npm │ │ │ │ └── package │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README │ │ │ │ │ └── npm-shrinkwrap.json │ │ │ ├── .gitignore │ │ │ ├── common │ │ │ │ └── common.js │ │ │ ├── konecty_user-presence-tests.js │ │ │ └── .versions │ │ ├── multiple-instances-status │ │ │ ├── .npm │ │ │ │ └── package │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── npm-shrinkwrap.json │ │ │ │ │ └── README │ │ │ ├── .gitignore │ │ │ ├── .versions │ │ │ ├── package.js │ │ │ └── HISTORY.md │ │ └── ecmascript-ts │ │ │ ├── plugin.js │ │ │ └── package.js │ ├── server │ │ └── index.js │ ├── .storybook │ │ ├── stubs │ │ │ ├── meteor │ │ │ │ ├── http.js │ │ │ │ ├── tracker.js │ │ │ │ ├── check.js │ │ │ │ ├── accounts-base.js │ │ │ │ ├── lmachens_user-presence.js │ │ │ │ ├── react-meteor-data.js │ │ │ │ ├── aldeed_schema-index.js │ │ │ │ └── meteor.js │ │ │ └── meteorPublishJoin.js │ │ └── config.js │ ├── public │ │ ├── images │ │ │ ├── hud.png │ │ │ ├── icon.png │ │ │ ├── logo.png │ │ │ ├── riot.png │ │ │ ├── TOP_icon.png │ │ │ ├── avatar.png │ │ │ ├── feedback.png │ │ │ ├── github.png │ │ │ ├── lottery.png │ │ │ ├── patreon.png │ │ │ ├── referrer.png │ │ │ ├── reforged.png │ │ │ ├── tshirt.png │ │ │ ├── twitch.png │ │ │ ├── youTube.png │ │ │ ├── JUNGLE_icon.png │ │ │ ├── MIDDLE_icon.png │ │ │ ├── shards │ │ │ │ ├── 5001.png │ │ │ │ ├── 5002.png │ │ │ │ ├── 5003.png │ │ │ │ ├── 5005.png │ │ │ │ ├── 5007.png │ │ │ │ └── 5008.png │ │ │ ├── twitch_small.png │ │ │ ├── youTube_small.png │ │ │ ├── DUO_CARRY_icon.png │ │ │ ├── leagues │ │ │ │ ├── gold_i.png │ │ │ │ ├── gold_ii.png │ │ │ │ ├── gold_iv.png │ │ │ │ ├── iron_i.png │ │ │ │ ├── iron_ii.png │ │ │ │ ├── iron_iv.png │ │ │ │ ├── master.png │ │ │ │ ├── bronze_i.png │ │ │ │ ├── bronze_ii.png │ │ │ │ ├── bronze_iii.png │ │ │ │ ├── bronze_iv.png │ │ │ │ ├── diamond_i.png │ │ │ │ ├── diamond_ii.png │ │ │ │ ├── diamond_iv.png │ │ │ │ ├── gold_iii.png │ │ │ │ ├── iron_iii.png │ │ │ │ ├── master_i.png │ │ │ │ ├── master_ii.png │ │ │ │ ├── master_iii.png │ │ │ │ ├── master_iv.png │ │ │ │ ├── platinum_i.png │ │ │ │ ├── silver_i.png │ │ │ │ ├── silver_ii.png │ │ │ │ ├── silver_iii.png │ │ │ │ ├── silver_iv.png │ │ │ │ ├── challenger_i.png │ │ │ │ ├── diamond_iii.png │ │ │ │ ├── platinum_ii.png │ │ │ │ ├── platinum_iii.png │ │ │ │ ├── platinum_iv.png │ │ │ │ ├── provisional_.png │ │ │ │ ├── challenger_ii.png │ │ │ │ ├── challenger_iii.png │ │ │ │ ├── challenger_iv.png │ │ │ │ ├── grandmaster_i.png │ │ │ │ ├── grandmaster_ii.png │ │ │ │ ├── grandmaster_iii.png │ │ │ │ └── grandmaster_iv.png │ │ │ ├── tshirt_download.png │ │ │ ├── DUO_SUPPORT_icon.png │ │ │ ├── become_a_patron_button.png │ │ │ └── download_stream_overlay.png │ │ └── files │ │ │ ├── trophy_hunter_print.zip │ │ │ └── trophy_hunter_stream_overlay.zip │ ├── babel.config.js │ └── template.settings.json ├── overwolf │ ├── development │ │ ├── src │ │ └── settings.js │ ├── production │ │ ├── src │ │ └── settings.js │ ├── .eslintrc.json │ ├── store │ │ ├── Icon.png │ │ ├── Tile.jpg │ │ ├── Screenshot1.png │ │ ├── Screenshot2.jpg │ │ ├── Screenshot3.jpg │ │ ├── Screenshot4.jpg │ │ ├── Screenshot5.jpg │ │ └── store.json │ ├── shared │ │ ├── lib │ │ │ └── core.js │ │ ├── assets │ │ │ ├── IconMouseOver.png │ │ │ ├── TrophyHunter.ico │ │ │ └── IconMouseNormal.png │ │ ├── plugins │ │ │ ├── http_request.dll │ │ │ ├── lol-start-plugin.dll │ │ │ └── simple-io-plugin.dll │ │ └── windows │ │ │ ├── images │ │ │ └── logo.png │ │ │ └── controller.html │ ├── .babelrc │ └── package.json └── shared │ ├── riot-api │ └── version.ts │ ├── trophies │ ├── types.ts │ ├── findPerk.ts │ ├── definitions │ │ └── trinityForce.ts │ └── getTrophiesCategory.ts │ ├── champions │ └── range.ts │ ├── trees │ └── definitions │ │ └── placeholder.ts │ ├── th-api │ └── getMatchWithTimeline.ts │ └── matches │ └── extendMatchResult │ ├── getParticipantIdentity.ts │ └── extendGeneralGroups.ts ├── .prettierignore ├── .github ├── logo.png ├── main.png ├── overlay.png ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE.md ├── .prettierrc ├── .nowignore ├── .gitignore └── tsconfig.json /packages/api/shared: -------------------------------------------------------------------------------- 1 | ../shared -------------------------------------------------------------------------------- /packages/www/shared: -------------------------------------------------------------------------------- 1 | ../shared -------------------------------------------------------------------------------- /packages/creator/shared: -------------------------------------------------------------------------------- 1 | ../shared -------------------------------------------------------------------------------- /packages/app/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/app/imports/shared: -------------------------------------------------------------------------------- 1 | ../../shared -------------------------------------------------------------------------------- /packages/overwolf/development/src: -------------------------------------------------------------------------------- 1 | ../shared -------------------------------------------------------------------------------- /packages/overwolf/production/src: -------------------------------------------------------------------------------- 1 | ../shared -------------------------------------------------------------------------------- /packages/api/README.md: -------------------------------------------------------------------------------- 1 | # Trophy Hunter Api 2 | -------------------------------------------------------------------------------- /packages/app/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.8.1 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/trees/server/methods.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/www/components/Screenshots/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/app/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /packages/app/.meteorignore: -------------------------------------------------------------------------------- 1 | *.stories.js 2 | .deploy 3 | dist -------------------------------------------------------------------------------- /packages/api/.nowignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | server.ts 3 | README.md 4 | -------------------------------------------------------------------------------- /packages/app/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM abernix/meteord:node-8.15.1-onbuild -------------------------------------------------------------------------------- /packages/creator/README.md: -------------------------------------------------------------------------------- 1 | # Trophy Hunter Creator 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/shared/riot-api/version.ts: -------------------------------------------------------------------------------- 1 | export default '10.15.1'; 2 | -------------------------------------------------------------------------------- /packages/www/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["next/babel"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/app/imports/api/matchup/server/index.js: -------------------------------------------------------------------------------- 1 | import './_methods'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/trophies/index.js: -------------------------------------------------------------------------------- 1 | export * from './helpers'; 2 | -------------------------------------------------------------------------------- /packages/creator/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["next/babel"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/www/components/CS/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './CS'; 2 | -------------------------------------------------------------------------------- /packages/www/components/KDA/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './KDA'; 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | **.md 3 | package.json 4 | package-lock.json 5 | -------------------------------------------------------------------------------- /packages/app/client/index.js: -------------------------------------------------------------------------------- 1 | import '/imports/startup/app/client/index'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/riot-api/version.js: -------------------------------------------------------------------------------- 1 | export default '10.15.1'; 2 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/app/server/index.js: -------------------------------------------------------------------------------- 1 | import '/imports/startup/app/server/index'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Home/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Home'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Item/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Item'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Legal/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Legal'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Link/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Link'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Match/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Match'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Perk/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Perk'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Spell/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Spell'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Tree/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Tree'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Trees/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Trees'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/patreon/index.js: -------------------------------------------------------------------------------- 1 | export { rewards } from './_rewards'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Champion/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Champion'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Features/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Features'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Footer/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Footer'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Header/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Header'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Landing/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Landing'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Matches/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Matches'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Parallax/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Parallax'; 2 | -------------------------------------------------------------------------------- /packages/www/components/TreeItem/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './TreeItem'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Trophies/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Trophies'; 2 | -------------------------------------------------------------------------------- /packages/www/components/Trophy/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Trophy'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/matchup/helpers/index.js: -------------------------------------------------------------------------------- 1 | export * from './_identifier'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Help/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Help'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Items/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Items'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Level/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Level'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Perk/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Perk'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Rank/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Rank'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Role/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Role'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Tree/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Tree'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Trees/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Trees'; 2 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/.gitignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .meteor/meteorite 3 | -------------------------------------------------------------------------------- /packages/www/components/TreeTrophy/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './TreeTrophy'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/collections/index.js: -------------------------------------------------------------------------------- 1 | export * from './_riotApiStatus'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/server/jobs/index.js: -------------------------------------------------------------------------------- 1 | export * from './_riotApiStatus'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/server/publications/index.js: -------------------------------------------------------------------------------- 1 | import './_riotApiStatus'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Badges/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Badges'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Content/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Content'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Friends/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Friends'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Heatmap/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Heatmap'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/HelpBox/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './HelpBox'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Matches/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Matches'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Profile/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Profile'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Ranking/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Ranking'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Spells/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Spells'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Status/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Status'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Trophy/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Trophy'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Twitch/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Twitch'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Update/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Update'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/pre-match/helpers/index.js: -------------------------------------------------------------------------------- 1 | export * from './getRole'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/LiveMatch/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LiveMatch'; 2 | -------------------------------------------------------------------------------- /packages/www/components/SummonerInfo/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './SummonerInfo'; 2 | -------------------------------------------------------------------------------- /packages/www/components/TitleDivider/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './TitleDivider'; 2 | -------------------------------------------------------------------------------- /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/.github/logo.png -------------------------------------------------------------------------------- /.github/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/.github/main.png -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/http.js: -------------------------------------------------------------------------------- 1 | export const HTTP = { 2 | get: () => {} 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/index.js: -------------------------------------------------------------------------------- 1 | export * from './summoners-rift'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ActionMap/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ActionMap'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/BuildOrder/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BuildOrder'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Changelog/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Changelog'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LiveMatch/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LiveMatch'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LotteryWin/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './LotteryWin'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Navigation/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Navigation'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Settings/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Settings'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SkillOrder/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SkillOrder'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Timeline/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Timeline'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeItem/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TreeItem'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeTrophy/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TreeTrophy'; 2 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/.gitignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .meteor/meteorite 3 | -------------------------------------------------------------------------------- /packages/overwolf/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "globals": { 3 | "overwolf": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/www/components/DownloadButton/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './DownloadButton'; 2 | -------------------------------------------------------------------------------- /packages/www/components/LeaguePositions/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './LeaguePositions'; 2 | -------------------------------------------------------------------------------- /packages/www/components/SummonerSearch/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './SummonerSearch'; 2 | -------------------------------------------------------------------------------- /.github/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/.github/overlay.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true, 4 | "endOfLine": "lf" 5 | } 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ActiveQuests/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ActiveQuests'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/AllTrophies/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AllTrophies'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/RiotVersion/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './RiotVersion'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeComplete/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TreeComplete'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeTrophies/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TreeTrophies'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunter/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyHunter'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyStats/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyStats'; 2 | -------------------------------------------------------------------------------- /packages/www/components/DataPrivacyPolicy/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './DataPrivacyPolicy'; 2 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/tracker.js: -------------------------------------------------------------------------------- 1 | export const Tracker = { 2 | autorun: () => {} 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/BannedChampions/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './BannedChampions'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ErrorBoundary/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ErrorBoundary'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/FollowersChip/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './FollowersChip'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/HoverableBorder/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './HoverableBorder'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Notifications/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './Notifications'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ReforgedModal/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ReforgedModal'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SettingsDialog/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SettingsDialog'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SummonerLevel/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './SummonerLevel'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Chip.js: -------------------------------------------------------------------------------- 1 | export { default as Chip } from 'material-ui/Chip'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_List.js: -------------------------------------------------------------------------------- 1 | export { List, ListItem } from 'material-ui/List'; 2 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/check.js: -------------------------------------------------------------------------------- 1 | export const check = () => {}; 2 | export const Match = {}; 3 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteorPublishJoin.js: -------------------------------------------------------------------------------- 1 | export const JoinClient = { 2 | get: () => {} 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/startup/app/client/register-api.js: -------------------------------------------------------------------------------- 1 | import '/imports/api/trophy-hunters/client/stubs'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/startup/server/colors.js: -------------------------------------------------------------------------------- 1 | import colors from 'colors'; 2 | 3 | colors.enabled = true; 4 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/AvatarWithStatus/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './AvatarWithStatus'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ConnectionStatus/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './ConnectionStatus'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/DamageComposition/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './DamageComposition'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophiesObtained/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophiesObtained'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterName/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyHunterName'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Badge.js: -------------------------------------------------------------------------------- 1 | export { default as Badge } from 'material-ui/Badge'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Styles.js: -------------------------------------------------------------------------------- 1 | export { withStyles } from '@material-ui/core/styles'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Switch.js: -------------------------------------------------------------------------------- 1 | export { default as Switch } from 'material-ui/Toggle'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/Add.js: -------------------------------------------------------------------------------- 1 | export { default as AddIcon } from '@material-ui/icons/Add'; 2 | -------------------------------------------------------------------------------- /packages/creator/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/accounts-base.js: -------------------------------------------------------------------------------- 1 | export const Accounts = { 2 | onLogin: () => {} 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/CustomTreeSelector/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './CustomTreeSelector'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/OnlineTrophyHunters/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './OnlineTrophyHunters'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TimelineParticipant/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TimelineParticipant'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterAvatar/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyHunterAvatar'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterPopover/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyHunterPopover'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/Button.js: -------------------------------------------------------------------------------- 1 | export { default as Button } from '@material-ui/core/Button'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/Select.js: -------------------------------------------------------------------------------- 1 | export { default as Select } from '@material-ui/core/Select'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Popover.js: -------------------------------------------------------------------------------- 1 | export { default as Popover } from 'material-ui/Popover'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_SvgIcon.js: -------------------------------------------------------------------------------- 1 | export { default as SvgIcon } from 'material-ui/SvgIcon'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/Pause.js: -------------------------------------------------------------------------------- 1 | export { default as PauseIcon } from '@material-ui/icons/Pause'; 2 | -------------------------------------------------------------------------------- /packages/shared/trophies/types.ts: -------------------------------------------------------------------------------- 1 | export const SUMMONERS_RIFT = 'SUMMONERS_RIFT'; 2 | export const ARAM = 'ARAM'; 3 | -------------------------------------------------------------------------------- /packages/www/components/Summoner/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Summoner'; 2 | export * from './typings'; 3 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/Tooltip.js: -------------------------------------------------------------------------------- 1 | export { default as Tooltip } from '@material-ui/core/Tooltip'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Checkbox.js: -------------------------------------------------------------------------------- 1 | export { default as Checkbox } from 'material-ui/Checkbox'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Snackbar.js: -------------------------------------------------------------------------------- 1 | export { default as Snackbar } from 'material-ui/Snackbar'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Subheader.js: -------------------------------------------------------------------------------- 1 | export { default as Subheader } from 'material-ui/Subheader'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_TextField.js: -------------------------------------------------------------------------------- 1 | export { default as TextField } from 'material-ui/TextField'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Toolbar.js: -------------------------------------------------------------------------------- 1 | export { Toolbar, ToolbarGroup } from 'material-ui/Toolbar'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/Remove.js: -------------------------------------------------------------------------------- 1 | export { default as RemoveIcon } from '@material-ui/icons/Remove'; 2 | -------------------------------------------------------------------------------- /packages/www/static/garen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/garen.jpg -------------------------------------------------------------------------------- /packages/www/static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/icon.png -------------------------------------------------------------------------------- /packages/www/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/logo.png -------------------------------------------------------------------------------- /packages/www/static/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/text.png -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/lmachens_user-presence.js: -------------------------------------------------------------------------------- 1 | export const UserPresence = { 2 | start: () => {} 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterAutoComplete/index.js: -------------------------------------------------------------------------------- 1 | export { default } from './TrophyHunterAutoComplete'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/MenuItem.js: -------------------------------------------------------------------------------- 1 | export { default as MenuItem } from '@material-ui/core/MenuItem'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_SelectField.js: -------------------------------------------------------------------------------- 1 | export { default as SelectField } from 'material-ui/SelectField'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/Forward.js: -------------------------------------------------------------------------------- 1 | export { default as ForwardIcon } from '@material-ui/icons/Forward'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/Refresh.js: -------------------------------------------------------------------------------- 1 | export { default as RefreshIcon } from '@material-ui/icons/Refresh'; 2 | -------------------------------------------------------------------------------- /packages/www/static/bg_big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/bg_big.jpg -------------------------------------------------------------------------------- /packages/www/static/discord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/discord.png -------------------------------------------------------------------------------- /packages/www/static/draven.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/draven.jpg -------------------------------------------------------------------------------- /packages/www/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/favicon.ico -------------------------------------------------------------------------------- /packages/www/static/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/github.png -------------------------------------------------------------------------------- /packages/www/static/howling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/howling.jpg -------------------------------------------------------------------------------- /packages/www/static/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/twitter.png -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Card.js: -------------------------------------------------------------------------------- 1 | export { Card, CardActions, CardHeader, CardText } from 'material-ui/Card'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_DropDownMenu.js: -------------------------------------------------------------------------------- 1 | export { default as DropDownMenu } from 'material-ui/DropDownMenu'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Progress.js: -------------------------------------------------------------------------------- 1 | export { default as LinearProgress } from 'material-ui/LinearProgress'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Typography.js: -------------------------------------------------------------------------------- 1 | export { default as Typography } from '@material-ui/core/Typography'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/FastForward.js: -------------------------------------------------------------------------------- 1 | export { default as FastForward } from '@material-ui/icons/FastForward'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/FastRewind.js: -------------------------------------------------------------------------------- 1 | export { default as FastRewind } from '@material-ui/icons/FastRewind'; 2 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/icons/PlayArrow.js: -------------------------------------------------------------------------------- 1 | export { default as PlayArrowIcon } from '@material-ui/icons/PlayArrow'; 2 | -------------------------------------------------------------------------------- /packages/app/public/images/hud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/hud.png -------------------------------------------------------------------------------- /packages/overwolf/store/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Icon.png -------------------------------------------------------------------------------- /packages/overwolf/store/Tile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Tile.jpg -------------------------------------------------------------------------------- /packages/www/static/bg_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/bg_small.jpg -------------------------------------------------------------------------------- /packages/www/static/freljord.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/freljord.jpg -------------------------------------------------------------------------------- /packages/www/static/icon_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/icon_gray.png -------------------------------------------------------------------------------- /packages/www/static/overwolf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/overwolf.png -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_RadioButton.js: -------------------------------------------------------------------------------- 1 | export { RadioButton, RadioButtonGroup } from 'material-ui/RadioButton'; 2 | -------------------------------------------------------------------------------- /packages/app/public/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/icon.png -------------------------------------------------------------------------------- /packages/app/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/logo.png -------------------------------------------------------------------------------- /packages/app/public/images/riot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/riot.png -------------------------------------------------------------------------------- /packages/overwolf/shared/lib/core.js: -------------------------------------------------------------------------------- 1 | export let source = undefined; 2 | export const setSource = newSource => (source = newSource); 3 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_CircularProgress.js: -------------------------------------------------------------------------------- 1 | export { default as CircularProgress } from 'material-ui/CircularProgress'; 2 | -------------------------------------------------------------------------------- /packages/app/public/images/TOP_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/TOP_icon.png -------------------------------------------------------------------------------- /packages/app/public/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/avatar.png -------------------------------------------------------------------------------- /packages/app/public/images/feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/feedback.png -------------------------------------------------------------------------------- /packages/app/public/images/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/github.png -------------------------------------------------------------------------------- /packages/app/public/images/lottery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/lottery.png -------------------------------------------------------------------------------- /packages/app/public/images/patreon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/patreon.png -------------------------------------------------------------------------------- /packages/app/public/images/referrer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/referrer.png -------------------------------------------------------------------------------- /packages/app/public/images/reforged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/reforged.png -------------------------------------------------------------------------------- /packages/app/public/images/tshirt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/tshirt.png -------------------------------------------------------------------------------- /packages/app/public/images/twitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/twitch.png -------------------------------------------------------------------------------- /packages/app/public/images/youTube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/youTube.png -------------------------------------------------------------------------------- /packages/overwolf/store/Screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Screenshot1.png -------------------------------------------------------------------------------- /packages/overwolf/store/Screenshot2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Screenshot2.jpg -------------------------------------------------------------------------------- /packages/overwolf/store/Screenshot3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Screenshot3.jpg -------------------------------------------------------------------------------- /packages/overwolf/store/Screenshot4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Screenshot4.jpg -------------------------------------------------------------------------------- /packages/overwolf/store/Screenshot5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/store/Screenshot5.jpg -------------------------------------------------------------------------------- /packages/www/static/leagues/gold_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/gold_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/gold_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/gold_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/gold_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/gold_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/iron_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/iron_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/iron_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/iron_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/iron_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/iron_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/master.png -------------------------------------------------------------------------------- /packages/www/static/screenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/screenshots/1.jpg -------------------------------------------------------------------------------- /packages/www/static/screenshots/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/screenshots/2.jpg -------------------------------------------------------------------------------- /packages/www/static/screenshots/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/screenshots/3.jpg -------------------------------------------------------------------------------- /packages/www/static/screenshots/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/screenshots/4.jpg -------------------------------------------------------------------------------- /packages/www/static/screenshots/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/screenshots/5.jpg -------------------------------------------------------------------------------- /packages/app/imports/api/ranking/server/index.js: -------------------------------------------------------------------------------- 1 | export * from './_calculateSeasonPoints'; 2 | export * from './_calculateTournamentPoints'; 3 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/CircularProgress.js: -------------------------------------------------------------------------------- 1 | export { default as CircularProgress } from '@material-ui/core/CircularProgress'; 2 | -------------------------------------------------------------------------------- /packages/www/static/leagues/bronze_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/bronze_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/bronze_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/bronze_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/bronze_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/bronze_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/diamond_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/diamond_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/gold_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/gold_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/iron_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/iron_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/master_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/master_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/master_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/master_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/master_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/master_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/silver_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/silver_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/silver_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/silver_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/silver_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/silver_iv.png -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/react-meteor-data.js: -------------------------------------------------------------------------------- 1 | export const withTracker = () => { 2 | return UI => { 3 | return UI; 4 | }; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/app/imports/startup/app/server/hostname.js: -------------------------------------------------------------------------------- 1 | import os from 'os'; 2 | 3 | const hostname = os.hostname(); 4 | 5 | export default hostname; 6 | -------------------------------------------------------------------------------- /packages/app/public/images/JUNGLE_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/JUNGLE_icon.png -------------------------------------------------------------------------------- /packages/app/public/images/MIDDLE_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/MIDDLE_icon.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5001.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5002.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5003.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5005.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5007.png -------------------------------------------------------------------------------- /packages/app/public/images/shards/5008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/shards/5008.png -------------------------------------------------------------------------------- /packages/app/public/images/twitch_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/twitch_small.png -------------------------------------------------------------------------------- /packages/app/public/images/youTube_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/youTube_small.png -------------------------------------------------------------------------------- /packages/www/static/leagues/bronze_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/bronze_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/challenger_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/challenger_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/diamond_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/diamond_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/diamond_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/diamond_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/diamond_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/diamond_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/master_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/master_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/platinum_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/platinum_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/platinum_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/platinum_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/platinum_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/platinum_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/platinum_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/platinum_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/provisional_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/provisional_.png -------------------------------------------------------------------------------- /packages/www/static/leagues/silver_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/silver_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/DUO_CARRY_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/DUO_CARRY_icon.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/gold_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/gold_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/gold_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/gold_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/gold_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/gold_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/iron_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/iron_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/iron_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/iron_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/iron_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/iron_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/master.png -------------------------------------------------------------------------------- /packages/app/public/images/tshirt_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/tshirt_download.png -------------------------------------------------------------------------------- /packages/www/static/backgrounds/gun-metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/backgrounds/gun-metal.png -------------------------------------------------------------------------------- /packages/www/static/leagues/challenger_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/challenger_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/challenger_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/challenger_iii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/challenger_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/challenger_iv.png -------------------------------------------------------------------------------- /packages/www/static/leagues/grandmaster_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/grandmaster_i.png -------------------------------------------------------------------------------- /packages/www/static/leagues/grandmaster_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/grandmaster_ii.png -------------------------------------------------------------------------------- /packages/www/static/leagues/grandmaster_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/grandmaster_iv.png -------------------------------------------------------------------------------- /packages/app/public/files/trophy_hunter_print.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/files/trophy_hunter_print.zip -------------------------------------------------------------------------------- /packages/app/public/images/DUO_SUPPORT_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/DUO_SUPPORT_icon.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/bronze_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/bronze_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/bronze_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/bronze_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/bronze_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/bronze_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/bronze_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/bronze_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/diamond_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/diamond_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/diamond_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/diamond_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/diamond_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/diamond_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/gold_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/gold_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/iron_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/iron_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/master_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/master_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/master_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/master_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/master_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/master_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/master_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/master_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/platinum_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/platinum_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/silver_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/silver_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/silver_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/silver_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/silver_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/silver_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/silver_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/silver_iv.png -------------------------------------------------------------------------------- /packages/overwolf/shared/assets/IconMouseOver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/assets/IconMouseOver.png -------------------------------------------------------------------------------- /packages/overwolf/shared/assets/TrophyHunter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/assets/TrophyHunter.ico -------------------------------------------------------------------------------- /packages/overwolf/shared/plugins/http_request.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/plugins/http_request.dll -------------------------------------------------------------------------------- /packages/overwolf/shared/windows/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/windows/images/logo.png -------------------------------------------------------------------------------- /packages/www/static/backgrounds/cartographer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/backgrounds/cartographer.png -------------------------------------------------------------------------------- /packages/www/static/backgrounds/dark-mosaic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/backgrounds/dark-mosaic.png -------------------------------------------------------------------------------- /packages/www/static/leagues/grandmaster_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/leagues/grandmaster_iii.png -------------------------------------------------------------------------------- /packages/app/imports/api/jobs/server/security.js: -------------------------------------------------------------------------------- 1 | import Jobs from '../jobs'; 2 | 3 | Jobs.allow({ 4 | admin(userId) { 5 | return !!userId; 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/public/images/leagues/challenger_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/challenger_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/diamond_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/diamond_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/platinum_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/platinum_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/platinum_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/platinum_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/platinum_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/platinum_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/provisional_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/provisional_.png -------------------------------------------------------------------------------- /packages/overwolf/shared/assets/IconMouseNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/assets/IconMouseNormal.png -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-300.woff -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-500.woff -------------------------------------------------------------------------------- /packages/app/imports/api/trophies/helpers.js: -------------------------------------------------------------------------------- 1 | export const getFirstTimeBonus = trophy => trophy.score * 3; 2 | export const getTreeBonus = trophy => trophy.score * 5; 3 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Menu.js: -------------------------------------------------------------------------------- 1 | export { default as Menu } from 'material-ui/Menu'; 2 | export { default as MenuItem } from 'material-ui/MenuItem'; 3 | -------------------------------------------------------------------------------- /packages/app/public/images/become_a_patron_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/become_a_patron_button.png -------------------------------------------------------------------------------- /packages/app/public/images/download_stream_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/download_stream_overlay.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/challenger_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/challenger_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/challenger_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/challenger_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/challenger_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/challenger_iv.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/grandmaster_i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/grandmaster_i.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/grandmaster_ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/grandmaster_ii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/grandmaster_iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/grandmaster_iii.png -------------------------------------------------------------------------------- /packages/app/public/images/leagues/grandmaster_iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/images/leagues/grandmaster_iv.png -------------------------------------------------------------------------------- /packages/overwolf/shared/plugins/lol-start-plugin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/plugins/lol-start-plugin.dll -------------------------------------------------------------------------------- /packages/overwolf/shared/plugins/simple-io-plugin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/overwolf/shared/plugins/simple-io-plugin.dll -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-300.woff2 -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-500.woff2 -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Grid.js: -------------------------------------------------------------------------------- 1 | export { GridList, GridTile } from 'material-ui/GridList'; 2 | export { default as Grid } from '@material-ui/core/Grid'; 3 | -------------------------------------------------------------------------------- /packages/shared/champions/range.ts: -------------------------------------------------------------------------------- 1 | const RANGE = { 2 | MELEE: 'Melee', 3 | RANGED: 'Ranged', 4 | SHAPE_SHIFTER: 'ShapeShifter' 5 | }; 6 | 7 | export default RANGE; 8 | -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-regular.woff -------------------------------------------------------------------------------- /packages/www/static/fonts/roboto-v18-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/www/static/fonts/roboto-v18-latin-regular.woff2 -------------------------------------------------------------------------------- /packages/app/imports/api/jobs/jobs.js: -------------------------------------------------------------------------------- 1 | import { JobCollection } from 'meteor/simonsimcity:job-collection'; 2 | 3 | const Jobs = new JobCollection('Jobs'); 4 | export default Jobs; 5 | -------------------------------------------------------------------------------- /packages/app/imports/startup/client/errors.js: -------------------------------------------------------------------------------- 1 | window.onerror = (message, url, line, col, error) => { 2 | console.error('window.onerror', message, url, line, col, error); 3 | }; 4 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_Avatar.js: -------------------------------------------------------------------------------- 1 | export { default as Avatar } from 'material-ui/Avatar'; 2 | export { default as AvatarV2 } from '@material-ui/core/Avatar'; 3 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/common/common.js: -------------------------------------------------------------------------------- 1 | /* globals UsersSessions */ 2 | /* exported UsersSessions */ 3 | 4 | UsersSessions = new Meteor.Collection('usersSessions'); 5 | -------------------------------------------------------------------------------- /packages/app/public/files/trophy_hunter_stream_overlay.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmachens/trophy-hunter-legacy/HEAD/packages/app/public/files/trophy_hunter_stream_overlay.zip -------------------------------------------------------------------------------- /packages/overwolf/store/store.json: -------------------------------------------------------------------------------- 1 | { 2 | "category_description": "For games", 3 | "tags": ["LoL", "League of Legends", "Twitch", "YouTube", "League"], 4 | "title": "Trophy Hunter" 5 | } 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/ranking/server/_calculateTournamentPoints.js: -------------------------------------------------------------------------------- 1 | export const calculateTournamentPoints = trophies => 2 | trophies.reduce((points, { trophy }) => points + trophy.score, 0); 3 | -------------------------------------------------------------------------------- /packages/app/imports/api/settings/tabs.js: -------------------------------------------------------------------------------- 1 | const TABS = { 2 | SETTINGS: 'Settings', 3 | HELP: 'Help', 4 | PATREON: 'Patreon', 5 | CHANGELOG: 'Changelog' 6 | }; 7 | 8 | export default TABS; 9 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/home/Home.js: -------------------------------------------------------------------------------- 1 | import Level from '/imports/ui/components/Level'; 2 | import React from 'react'; 3 | 4 | const Home = () => ; 5 | 6 | export default Home; 7 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/konecty_user-presence-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function(test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/collections/_riotApiStatus.js: -------------------------------------------------------------------------------- 1 | import TimestampedCollection from '../../timestampedCollection'; 2 | 3 | export const RiotApiStatus = new TimestampedCollection('RiotApiStatus'); 4 | -------------------------------------------------------------------------------- /packages/app/imports/api/utilities/safeParseInt.js: -------------------------------------------------------------------------------- 1 | const safeParseInt = data => { 2 | if (/^\d+$/.test(data)) { 3 | return parseInt(data); 4 | } 5 | return data; 6 | }; 7 | 8 | export default safeParseInt; 9 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/.versions: -------------------------------------------------------------------------------- 1 | lmachens:multiple-instances-status@1.0.6 2 | local-test:lmachens:multiple-instances-status@1.0.6 3 | meteor@1.1.10 4 | nooitaf:colors@0.0.2 5 | underscore@1.0.4 6 | -------------------------------------------------------------------------------- /packages/shared/trees/definitions/placeholder.ts: -------------------------------------------------------------------------------- 1 | const placeholder = { 2 | title: 'No custom tree selected', 3 | name: 'placeholder', 4 | championId: 0, 5 | leaves: [] 6 | }; 7 | 8 | export default placeholder; 9 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/home/Home.stories.js: -------------------------------------------------------------------------------- 1 | import Home from './Home'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('Home', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/wins.js: -------------------------------------------------------------------------------- 1 | const wins = { 2 | name: 'wins', 3 | title: 'Wins', 4 | description: 'Cumulative Wins.', 5 | type: 'increase', 6 | property: 'win' 7 | }; 8 | export default wins; 9 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/match/Match.stories.js: -------------------------------------------------------------------------------- 1 | import Match from './Match'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('Match', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Help/Help.stories.js: -------------------------------------------------------------------------------- 1 | import Help from './Help'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Help', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Level/Level.stories.js: -------------------------------------------------------------------------------- 1 | import Level from './Level'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Level', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Trees/Trees.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Trees from './Trees'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Trees', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/packages/ecmascript-ts/plugin.js: -------------------------------------------------------------------------------- 1 | Plugin.registerCompiler( 2 | { 3 | extensions: ['ts', 'tsx'] 4 | }, 5 | function() { 6 | return new BabelCompiler({ 7 | react: true 8 | }); 9 | } 10 | ); 11 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/kills.js: -------------------------------------------------------------------------------- 1 | const kills = { 2 | name: 'kills', 3 | title: 'Kills', 4 | description: 'Cumulative kills.', 5 | type: 'increase', 6 | property: 'kills' 7 | }; 8 | 9 | export default kills; 10 | -------------------------------------------------------------------------------- /packages/app/imports/store/actions/_uiStates.js: -------------------------------------------------------------------------------- 1 | import { SET_UI_STATE } from '../types'; 2 | 3 | export const setUIState = state => { 4 | return { 5 | type: SET_UI_STATE, 6 | data: { 7 | state 8 | } 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Perk/Perk.stories.js: -------------------------------------------------------------------------------- 1 | import Perk from './Perk'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Perk', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Status/Status.stories.js: -------------------------------------------------------------------------------- 1 | import Status from './Status'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Status', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/layouts/AppLayout.stories.js: -------------------------------------------------------------------------------- 1 | import AppLayout from './AppLayout'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Layouts', module).add('AppLayout', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/items/ItemsPage.stories.js: -------------------------------------------------------------------------------- 1 | import ItemsPage from './ItemsPage'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('ItemsPage', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/login/LoginPage.stories.js: -------------------------------------------------------------------------------- 1 | import LoginPage from './LoginPage'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('LoginPage', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/games.js: -------------------------------------------------------------------------------- 1 | const games = { 2 | name: 'games', 3 | title: 'Games', 4 | description: 'Cumulative Games.', 5 | type: 'increase', 6 | property: 'validMatch' 7 | }; 8 | 9 | export default games; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/twitch-api/server/publications.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import TwitchStreams from '../twitchStreams'; 3 | 4 | Meteor.publish('twitch.streams.online', function() { 5 | return TwitchStreams.find(); 6 | }); 7 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Friends/Friends.stories.js: -------------------------------------------------------------------------------- 1 | import Friends from './Friends'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Friends', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/HelpBox/HelpBox.stories.js: -------------------------------------------------------------------------------- 1 | import HelpBox from './HelpBox'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('HelpBox', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/patreon/Patreon.stories.js: -------------------------------------------------------------------------------- 1 | import Patreon from './Patreon'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Patreon', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/sidebar/Sidebar.stories.js: -------------------------------------------------------------------------------- 1 | import Sidebar from './Sidebar'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Sidebar', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/LiveMatch/LiveMatch.stories.js: -------------------------------------------------------------------------------- 1 | import LiveMatch from './LiveMatch'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('LiveMatch', () => ); 6 | -------------------------------------------------------------------------------- /packages/creator/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface JSONEditorProps { 2 | json?: any; 3 | text?: any; 4 | mode: 'code' | 'form' | 'tree'; 5 | onChangeJSON?(json: string): void; 6 | onChangeText?(text: string): void; 7 | [key: string]: any; 8 | } 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/deaths.js: -------------------------------------------------------------------------------- 1 | const deaths = { 2 | name: 'deaths', 3 | title: 'Deaths', 4 | description: 'Cumulative deaths.', 5 | type: 'increase', 6 | property: 'deaths' 7 | }; 8 | 9 | export default deaths; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Rank/Rank.stories.js: -------------------------------------------------------------------------------- 1 | import Rank from './Rank'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Rank', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Settings/Settings.stories.js: -------------------------------------------------------------------------------- 1 | import Settings from './Settings'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Settings', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/assists.js: -------------------------------------------------------------------------------- 1 | const assists = { 2 | name: 'assists', 3 | title: 'Assists', 4 | description: 'Cumulative assists.', 5 | type: 'increase', 6 | property: 'assists' 7 | }; 8 | 9 | export default assists; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Rank/Rank.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | 3 | const Rank = ({ rank }) => (rank ? `${rank}. Rank` : 'Unranked'); 4 | 5 | Rank.propTypes = { 6 | rank: PropTypes.number 7 | }; 8 | 9 | export default Rank; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/AvatarItem.stories.js: -------------------------------------------------------------------------------- 1 | import AvatarItem from './AvatarItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('AvatarItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/TwitchItem.stories.js: -------------------------------------------------------------------------------- 1 | import TwitchItem from './TwitchItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TwitchItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/pages/ranking/RankingPage.stories.js: -------------------------------------------------------------------------------- 1 | import RankingPage from './RankingPage'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Pages', module).add('RankingPage', () => ); 6 | -------------------------------------------------------------------------------- /packages/overwolf/production/settings.js: -------------------------------------------------------------------------------- 1 | const settings = { 2 | name: 'Production', 3 | domain: 'https://lol-app.th.gl', 4 | overlayDomain: 'https://lol-app.th.gl/live', 5 | overlayHotkey: 'trophy_hunter_overlay' 6 | }; 7 | 8 | export default settings; 9 | -------------------------------------------------------------------------------- /.nowignore: -------------------------------------------------------------------------------- 1 | .github 2 | .vscode 3 | dist 4 | node_modules 5 | packages/api/server.ts 6 | packages/app 7 | packages/creator 8 | packages/overwolf 9 | .gitignore 10 | .prettierignore 11 | .prettierrc 12 | CHANGELOG.md 13 | README.md 14 | tslint.json 15 | .next 16 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/maxGold.js: -------------------------------------------------------------------------------- 1 | const maxGold = { 2 | name: 'maxGold', 3 | title: 'Maximum Gold', 4 | description: 'Maximum gold earned.', 5 | type: 'max', 6 | property: 'goldEarned' 7 | }; 8 | 9 | export default maxGold; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/matchup/helpers/_identifier.js: -------------------------------------------------------------------------------- 1 | export const createMatchupMatchesIdentifier = ({ champ1Id, champ2Id, mapId }) => { 2 | return champ1Id > champ2Id 3 | ? `${champ2Id}&${champ1Id}&${mapId}` 4 | : `${champ1Id}&${champ2Id}&${mapId}`; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/patreon/_rewards.js: -------------------------------------------------------------------------------- 1 | export const rewards = [ 2 | { 3 | id: '2304899', 4 | name: 'badge', 5 | label: 'Badge' 6 | }, 7 | { 8 | id: '2304888', 9 | name: 'hideAds', 10 | label: 'No more ads' 11 | } 12 | ]; 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Update/Update.stories.js: -------------------------------------------------------------------------------- 1 | import Update from './Update'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Update', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/YouTubeItem.stories.js: -------------------------------------------------------------------------------- 1 | import YouTubeItem from './YouTubeItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('YouTubeItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/layouts/OverlayLayout.stories.js: -------------------------------------------------------------------------------- 1 | import OverlayLayout from './OverlayLayout'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Layouts', module).add('OverlayLayout', () => ); 6 | -------------------------------------------------------------------------------- /packages/overwolf/development/settings.js: -------------------------------------------------------------------------------- 1 | const settings = { 2 | name: 'Development', 3 | domain: 'http://localhost:3000', 4 | overlayDomain: 'http://localhost:3000/live', 5 | overlayHotkey: 'trophy_hunter_overlay_dev' 6 | }; 7 | 8 | export default settings; 9 | -------------------------------------------------------------------------------- /packages/api/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine 2 | LABEL maintainer="leon.machens@gmail.com" 3 | 4 | EXPOSE 5000 5 | 6 | RUN npm install -g yarn 7 | COPY package.json package.json 8 | RUN yarn install 9 | 10 | COPY dist dist 11 | 12 | CMD ["node", "dist/server.js"] -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/maxKills.js: -------------------------------------------------------------------------------- 1 | const maxKills = { 2 | name: 'maxKills', 3 | title: 'Maximum Kills', 4 | description: 'Maximum number of kills.', 5 | type: 'max', 6 | property: 'kills' 7 | }; 8 | 9 | export default maxKills; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/winStreak.js: -------------------------------------------------------------------------------- 1 | const winStreak = { 2 | name: 'winStreak', 3 | title: 'Winning streak', 4 | description: 'Consecutive wins.', 5 | type: 'straight', 6 | property: 'win' 7 | }; 8 | 9 | export default winStreak; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Profile/Profile.stories.js: -------------------------------------------------------------------------------- 1 | import Profile from './Profile'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Profile', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/FeedbackItem.stories.js: -------------------------------------------------------------------------------- 1 | import FeedbackItem from './FeedbackItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('FeedbackItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/ReferrerItem.stories.js: -------------------------------------------------------------------------------- 1 | import ReferrerItem from './ReferrerItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('ReferrerItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ActionMap/ActionMap.stories.js: -------------------------------------------------------------------------------- 1 | import ActionMap from './ActionMap'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('ActionMap', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/AllTrophies/AllTrophies.stories.js: -------------------------------------------------------------------------------- 1 | import AllTrophies from './AllTrophies'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('AllTrophies', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/RiotVersion/RiotVersion.stories.js: -------------------------------------------------------------------------------- 1 | import RiotVersion from './RiotVersion'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('RiotVersion', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/status/server/publications/_riotApiStatus.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import { RiotApiStatus } from '../../collections'; 3 | 4 | Meteor.publish('riotApiStatus', function() { 5 | return RiotApiStatus.find({ invalidate: false }); 6 | }); 7 | -------------------------------------------------------------------------------- /packages/app/imports/startup/server/mongo.js: -------------------------------------------------------------------------------- 1 | import { MongoInternals } from 'meteor/mongo'; 2 | 3 | MongoInternals.defaultRemoteCollectionDriver().mongo.db.s.topology.on('reconnectFailed', err => { 4 | console.error('reconnectFailed', err.stack); 5 | process.exit(1); 6 | }); 7 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Changelog/Changelog.stories.js: -------------------------------------------------------------------------------- 1 | import Changelog from './Changelog'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Changelog', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Content/Content.stories.js: -------------------------------------------------------------------------------- 1 | import Content from './Content'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Content', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/riot-api/regions.js: -------------------------------------------------------------------------------- 1 | const oldRegionsMap = { 2 | br1: 'br', 3 | eun1: 'eune', 4 | euw1: 'euw', 5 | jp1: 'jp', 6 | la1: 'lan', 7 | la2: 'las', 8 | na1: 'na', 9 | oc1: 'oce', 10 | tr1: 'tr' 11 | }; 12 | 13 | export default oldRegionsMap; 14 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Notifications/Notifications.stories.js: -------------------------------------------------------------------------------- 1 | import Notifications from './Notifications'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Notifications', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SummonerLevel/SummonerLevel.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | 3 | const SummonerLevel = ({ level }) => `${level}. Level`; 4 | 5 | SummonerLevel.propTypes = { 6 | level: PropTypes.number 7 | }; 8 | 9 | export default SummonerLevel; 10 | -------------------------------------------------------------------------------- /packages/www/pages/legal.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Legal from '../components/Legal'; 3 | import Page from '../layouts/Page'; 4 | 5 | const LegalPage = props => ( 6 | 7 | 8 | 9 | ); 10 | 11 | export default LegalPage; 12 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/maxCrit.js: -------------------------------------------------------------------------------- 1 | const maxCrit = { 2 | name: 'maxCrit', 3 | title: 'Maximum Critical Strike', 4 | description: 'Largest Critical Strike.', 5 | type: 'max', 6 | property: 'largestCriticalStrike' 7 | }; 8 | 9 | export default maxCrit; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/StreamOverlayItem.stories.js: -------------------------------------------------------------------------------- 1 | import StreamOverlayItem from './StreamOverlayItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('StreamOverlayItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/store/TShirtArtworkItem.stories.js: -------------------------------------------------------------------------------- 1 | import TShirtArtworkItem from './TShirtArtworkItem'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TShirtArtworkItem', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/index.js: -------------------------------------------------------------------------------- 1 | import * as earliest from './earliest'; 2 | import * as maximum from './maximum'; 3 | import * as streaks from './streaks'; 4 | 5 | export const summonersRift = { 6 | earliest, 7 | maximum, 8 | streaks 9 | }; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxGold.js: -------------------------------------------------------------------------------- 1 | export const sr_maxGold = { 2 | name: 'sr_maxGold', 3 | title: 'Max gold Summoners Rift', 4 | description: 'Maximum gold in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'goldEarned' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxKills.js: -------------------------------------------------------------------------------- 1 | export const sr_maxKills = { 2 | name: 'sr_maxKills', 3 | title: 'Max Kills Summoners Rift', 4 | description: 'Maximum kills in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'kills' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunter/TrophyHunter.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyHunter from './TrophyHunter'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TrophyHunter', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/aldeed_schema-index.js: -------------------------------------------------------------------------------- 1 | import SimpleSchema from 'simpl-schema'; 2 | 3 | // Extend the schema options allowed by SimpleSchema 4 | SimpleSchema.extendOptions([ 5 | 'index', // one of Number, String, Boolean 6 | 'unique', // Boolean 7 | 'sparse' // Boolean 8 | ]); 9 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/AvatarWithStatus/AvatarWithStatus.stories.js: -------------------------------------------------------------------------------- 1 | import AvatarWithStatus from './AvatarWithStatus'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('AvatarWithStatus', () => ); 6 | -------------------------------------------------------------------------------- /packages/creator/api/getItems.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const getItems = ({ version, lang }) => { 4 | const url = `https://ddragon.leagueoflegends.com/cdn/${version}/data/${lang}/item.json`; 5 | return axios.get(url).then(response => response.data); 6 | }; 7 | 8 | export default getItems; 9 | -------------------------------------------------------------------------------- /packages/www/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Landing from '../components/Landing'; 3 | import Page from '../layouts/Page'; 4 | 5 | const LandingPage = props => ( 6 | 7 | 8 | 9 | ); 10 | 11 | export default LandingPage; 12 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/maxMinions.js: -------------------------------------------------------------------------------- 1 | const maxMinions = { 2 | name: 'maxMinions', 3 | title: 'Maximum Minions', 4 | description: 'Maximum number of minions killed in a game.', 5 | type: 'max', 6 | property: 'totalMinionsKilled' 7 | }; 8 | 9 | export default maxMinions; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxAssists.js: -------------------------------------------------------------------------------- 1 | export const sr_maxAssists = { 2 | name: 'sr_maxAssists', 3 | title: 'Max assists Summoners Rift', 4 | description: 'Maximum assists in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'assists' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakWin.js: -------------------------------------------------------------------------------- 1 | export const sr_streakWin = { 2 | name: 'sr_streakWin', 3 | title: 'longest win streak Summoners Rift', 4 | description: 'Longest win streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'win' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SettingsDialog/SettingsDialog.stories.js: -------------------------------------------------------------------------------- 1 | import SettingsDialog from './SettingsDialog'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('SettingsDialog', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxCs.js: -------------------------------------------------------------------------------- 1 | export const sr_maxCs = { 2 | name: 'sr_maxCs', 3 | title: 'Max cs Summoners Rift', 4 | description: 'Maximum creep score (minions+jungle) in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalCs' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakLoss.js: -------------------------------------------------------------------------------- 1 | export const sr_streakLoss = { 2 | name: 'sr_streakLoss', 3 | title: 'longest loss streak Summoners Rift', 4 | description: 'Longest loss streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'loss' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Heatmap/Heatmap.stories.js: -------------------------------------------------------------------------------- 1 | import Heatmap from './Heatmap'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const data = { 6 | data: [] 7 | }; 8 | 9 | storiesOf('Components', module).add('Heatmap', () => ); 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/alerts/server/methods.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import alerts from '../alerts'; 3 | import { check } from 'meteor/check'; 4 | 5 | Meteor.methods({ 6 | sendToDiscord(message) { 7 | check(message, Object); 8 | alerts.sendToDiscord(message); 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostKPStreak.js: -------------------------------------------------------------------------------- 1 | const mostKPStreak = { 2 | name: 'mostKPStreak', 3 | title: 'Highest kill participation', 4 | description: 'Consecutive highest kill participation.', 5 | type: 'straight', 6 | property: 'mostKP' 7 | }; 8 | 9 | export default mostKPStreak; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/OnlineTrophyHunters/OnlineTrophyHunters.stories.js: -------------------------------------------------------------------------------- 1 | import OnlineTrophyHunters from './OnlineTrophyHunters'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('OnlineTrophyHunters', () => ); 6 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SummonerLevel/SummonerLevel.stories.js: -------------------------------------------------------------------------------- 1 | import SummonerLevel from './SummonerLevel'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('SummonerLevel', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Tree/Tree.stories.js: -------------------------------------------------------------------------------- 1 | import Tree from './Tree'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import kalista1 from '/imports/shared/trees/definitions/kalista1'; 5 | 6 | storiesOf('Components', module).add('Tree', () => ); 7 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeComplete/TreeComplete.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TreeComplete from './TreeComplete'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TreeComplete', () => ( 6 | 7 | )); 8 | -------------------------------------------------------------------------------- /packages/creator/api/getChampions.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const getChampions = ({ version, lang }) => { 4 | const url = `https://ddragon.leagueoflegends.com/cdn/${version}/data/${lang}/champion.json`; 5 | return axios.get(url).then(response => response.data); 6 | }; 7 | 8 | export default getChampions; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestKill.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestKill = { 2 | name: 'sr_earliestKill', 3 | title: 'Earliest kill Summoners Rift', 4 | description: 'Earliest kill in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestKill' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxTotalHeal.js: -------------------------------------------------------------------------------- 1 | export const sr_maxTotalHeal = { 2 | name: 'sr_maxTotalHeal', 3 | title: 'Max total heal Summoners Rift', 4 | description: 'Maximum total heal in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalHeal' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeTrophy/TreeTrophy.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TreeTrophy from './TreeTrophy'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TreeTrophy', () => ( 6 | 7 | )); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterName/TrophyHunterName.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyHunterName from './TrophyHunterName'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TrophyHunterName', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/www/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:lts-alpine 2 | LABEL maintainer="leon.machens@gmail.com" 3 | 4 | EXPOSE 3000 5 | 6 | RUN npm install -g yarn 7 | COPY next.config.js next.config.js 8 | COPY package.json package.json 9 | RUN yarn install 10 | 11 | COPY dist dist 12 | COPY static static 13 | 14 | CMD ["yarn", "start"] -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostJnglCSStreak.js: -------------------------------------------------------------------------------- 1 | const mostJnglCSStreak = { 2 | name: 'mostJnglCSStreak', 3 | title: 'Most jungle cs', 4 | description: 'Consecutive most own and enemy jungle cs.', 5 | type: 'straight', 6 | property: 'mostJnglCS' 7 | }; 8 | 9 | export default mostJnglCSStreak; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestBaron.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestBaron = { 2 | name: 'sr_earliestBaron', 3 | title: 'Earliest baron Summoners Rift', 4 | description: 'Earliest baron in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestBaron' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/creator/api/getChampion.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const getChampion = ({ version, lang, id }) => { 4 | const url = `https://ddragon.leagueoflegends.com/cdn/${version}/data/${lang}/champion/${id}.json`; 5 | return axios.get(url).then(response => response.data); 6 | }; 7 | 8 | export default getChampion; 9 | -------------------------------------------------------------------------------- /packages/www/pages/privacy.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import DataPrivacyPolicy from '../components/DataPrivacyPolicy'; 3 | import Page from '../layouts/Page'; 4 | 5 | const PrivacyPage = props => ( 6 | 7 | 8 | 9 | ); 10 | 11 | export default PrivacyPage; 12 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/largestKillingSpree.js: -------------------------------------------------------------------------------- 1 | const largestKillingSpree = { 2 | name: 'largestKillingSpree', 3 | title: 'Largest Killing Spree', 4 | description: 'Largest Killing Spree.', 5 | type: 'max', 6 | property: 'largestKillingSpree' 7 | }; 8 | 9 | export default largestKillingSpree; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestDragon.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestDragon = { 2 | name: 'sr_earliestDragon', 3 | title: 'Earliest dragon Summoners Rift', 4 | description: 'Earliest dragon in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestDragon' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/FollowersChip/FollowersChip.stories.js: -------------------------------------------------------------------------------- 1 | import { FollowersChip } from './FollowersChip'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('FollowersChip', () => ( 6 | 7 | )); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterAvatar/TrophyHunterAvatar.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyHunterAvatar from './TrophyHunterAvatar'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TrophyHunterAvatar', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/creator/api/getSummonerSpells.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const getSummonerSpells = ({ version, lang }) => { 4 | const url = `https://ddragon.leagueoflegends.com/cdn/${version}/data/${lang}/summoner.json`; 5 | return axios.get(url).then(response => response.data); 6 | }; 7 | 8 | export default getSummonerSpells; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxGoldPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxGoldPerMin = { 2 | name: 'sr_maxGoldPerMin', 3 | title: 'Max gold per minute Summoners Rift', 4 | description: 'Maximum gold per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'goldPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxVisionScore.js: -------------------------------------------------------------------------------- 1 | export const sr_maxVisionScore = { 2 | name: 'sr_maxVisionScore', 3 | title: 'Max vision score Summoners Rift', 4 | description: 'Maximum vision score in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'visionScore' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ActiveQuests/ActiveQuests.stories.js: -------------------------------------------------------------------------------- 1 | import ActiveQuests from './ActiveQuests'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('ActiveQuests', () => ( 6 | 7 | )); 8 | -------------------------------------------------------------------------------- /packages/app/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LoL Trophy Hunter App 4 | 5 | 6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestLevel18.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestLevel18 = { 2 | name: 'sr_earliestLevel18', 3 | title: 'Earliest level 18 Summoners Rift', 4 | description: 'Earliest level 18 in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestLevel18' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxCsPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxCsPerMin = { 2 | name: 'sr_maxCsPerMin', 3 | title: 'Max cs per minute Summoners Rift', 4 | description: 'Maximum creep score (cs) per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalCsPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxGameDuration.js: -------------------------------------------------------------------------------- 1 | export const sr_maxGameDuration = { 2 | name: 'sr_maxGameDuration', 3 | title: 'Max game duration Summoners Rift', 4 | description: 'Maximum game duration in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'gameDuration' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxKillsPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxKillsPerMin = { 2 | name: 'sr_maxKillsPerMin', 3 | title: 'Max kills per minute Summoners Rift', 4 | description: 'Maximum kills per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'killsPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakMostKills.js: -------------------------------------------------------------------------------- 1 | export const sr_streakMostKills = { 2 | name: 'sr_streakMostKills', 3 | title: 'longest most kills streak Summoners Rift', 4 | description: 'Longest most kills streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'mostKills' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxKillingSpree.js: -------------------------------------------------------------------------------- 1 | export const sr_maxKillingSpree = { 2 | name: 'sr_maxKillingSpree', 3 | title: 'Max killing spree Summoners Rift', 4 | description: 'Maximum killing spree in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'largestKillingSpree' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterPopover/TrophyHunterPopover.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyHunterPopover from './TrophyHunterPopover'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TrophyHunterPopover', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/creator/api/getReforgedRunePaths.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const getReforgedRunePaths = ({ version, lang }) => { 4 | const url = `https://ddragon.leagueoflegends.com/cdn/${version}/data/${lang}/runesReforged.json`; 5 | return axios.get(url).then(response => response.data); 6 | }; 7 | 8 | export default getReforgedRunePaths; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxAssistPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxAssistsPerMin = { 2 | name: 'sr_maxAssistsPerMin', 3 | title: 'Max assists per minute Summoners Rift', 4 | description: 'Maximum assists per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'assistsPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakFirstBlood.js: -------------------------------------------------------------------------------- 1 | export const sr_streakFirstBlood = { 2 | name: 'sr_streakFirstBlood', 3 | title: 'longest first blood streak Summoners Rift', 4 | description: 'Longest first blood streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'firstBloodKill' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakMostCs.js: -------------------------------------------------------------------------------- 1 | export const sr_streakMostCs = { 2 | name: 'sr_streakMostCs', 3 | title: 'longest most creep score (ss) streak Summoners Rift', 4 | description: 'Longest most creep score (cs) streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'mostCs' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Spells/Spells.stories.js: -------------------------------------------------------------------------------- 1 | import Spells from './Spells'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const participant = { 6 | spell1Id: 11, 7 | spell2Id: 7 8 | }; 9 | 10 | storiesOf('Components', module).add('Spells', () => ); 11 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/Dialog.stories.js: -------------------------------------------------------------------------------- 1 | import { Dialog } from './_Dialog'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Dialog', () => ( 6 | {}} open={true} title="Title"> 7 | Content 8 | 9 | )); 10 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/.npm/package/npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "lockfileVersion": 1, 3 | "dependencies": { 4 | "colors": { 5 | "version": "1.1.2", 6 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 7 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakLeastDeaths.js: -------------------------------------------------------------------------------- 1 | export const sr_streakLeastDeaths = { 2 | name: 'sr_streakLeastDeaths', 3 | title: 'longest leasts deaths streak Summoners Rift', 4 | description: 'Longest least deaths streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'leastDeaths' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/trophyHuntStreak.js: -------------------------------------------------------------------------------- 1 | const trophyHuntStreak = { 2 | name: 'trophyHuntStreak', 3 | title: 'Trophy Hunt Streak', 4 | description: 'Consecutive successful trophy hunts (kill each opponent at least once).', 5 | type: 'straight', 6 | property: 'trophyHunt' 7 | }; 8 | 9 | export default trophyHuntStreak; 10 | -------------------------------------------------------------------------------- /packages/app/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | rleox8rhsn2y1x5mg4n 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostDestructsStreak.js: -------------------------------------------------------------------------------- 1 | const mostDestructsStreak = { 2 | name: 'mostDestructsStreak', 3 | title: 'Most Destructs Streak', 4 | description: 'Consecutive most buildings (turret & inhibitor) destroyed.', 5 | type: 'straight', 6 | property: 'mostDestructs' 7 | }; 8 | 9 | export default mostDestructsStreak; 10 | -------------------------------------------------------------------------------- /packages/app/imports/api/playstyles/definitions/unknown.js: -------------------------------------------------------------------------------- 1 | const unknown = { 2 | name: 'unknown', 3 | title: 'Unknown playstyle', 4 | description: 'Not enough data to analyse this summoners playstyle. Play at least one match.', 5 | icon: 'M256 16C166 16 76 196 76 316c0 90 60 180 180 180s180-90 180-180c0-120-90-300-180-300z' 6 | }; 7 | 8 | export default unknown; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestElderDragon.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestElderDragon = { 2 | name: 'sr_earliestElderDragon', 3 | title: 'Earliest elder dragon Summoners Rift', 4 | description: 'Earliest elder dragon in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestElderDragon' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestFirstTurret.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestFirstTurret = { 2 | name: 'sr_earliestFirstTurret', 3 | title: 'Earliest first turret Summoners Rift', 4 | description: 'Earliest first turret in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestFirstTurret' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxTotalHealPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxTotalHealPerMin = { 2 | name: 'sr_maxTotalHealPerMin', 3 | title: 'Max total heal per minute Summoners Rift', 4 | description: 'Maximum total heal per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalHealPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ConnectionStatus/ConnectionStatus.stories.js: -------------------------------------------------------------------------------- 1 | import { ConnectionStatus } from './ConnectionStatus'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('ConnectionStatus', () => ( 6 | 7 | )); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/CustomTreeSelector/CustomTreeSelector.stories.js: -------------------------------------------------------------------------------- 1 | import CustomTreeSelector from './CustomTreeSelector'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('CustomTreeSelector', () => ( 6 | {}} trophyHunter={null} /> 7 | )); 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/HoverableBorder/HoverableBorder.stories.js: -------------------------------------------------------------------------------- 1 | import HoverableBorder from './HoverableBorder'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('HoverableBorder', () => ( 6 | 7 |
Hover me
8 |
9 | )); 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | production.settings.json 2 | settings.json 3 | .vscode/* 4 | !.vscode/settings.json 5 | !.vscode/tasks.json 6 | !.vscode/launch.json 7 | !.vscode/extensions.json 8 | !tools/cli/settings.json 9 | node_modules/ 10 | npm-debug.log 11 | npm-debug.log* 12 | deploy/ 13 | dump 14 | .cache 15 | build 16 | .next 17 | yarn-error.log 18 | dist 19 | run.ps1 20 | .deploy -------------------------------------------------------------------------------- /packages/app/imports/store/reducers/_helpers.js: -------------------------------------------------------------------------------- 1 | export const clearExpired = (state, ttl = 1000 * 60 * 60 * 24 * 7) => { 2 | const newState = { ...state }; 3 | Object.entries(state).forEach(([key, value]) => { 4 | if (!value.lastUpdated || value.lastUpdated + ttl < Date.now()) { 5 | delete newState[key]; 6 | } 7 | }); 8 | return newState; 9 | }; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Trophy/Trophy.stories.js: -------------------------------------------------------------------------------- 1 | import Trophy from './Trophy'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import trophies from '/imports/shared/trophies/index.ts'; 5 | 6 | const trophy = trophies.appetizer; 7 | 8 | storiesOf('Components', module).add('Trophy', () => ); 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakTrophyHunt.js: -------------------------------------------------------------------------------- 1 | export const sr_streakTrophyHunt = { 2 | name: 'sr_streakTrophyHunt', 3 | title: 'longest trophy hunt streak Summoners Rift', 4 | description: 'Longest trophy hunt (kill each enemy champion) streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'trophyHunt' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/creator/components/Header.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link'; 2 | import React from 'react'; 3 | 4 | const Header = () => ( 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | ); 14 | 15 | export default Header; 16 | -------------------------------------------------------------------------------- /packages/www/components/Summoner/typings.ts: -------------------------------------------------------------------------------- 1 | import { ILeaguePositions, IMatchWithTimeline, ISummoner } from '../../shared/riot-api/typings'; 2 | 3 | export interface ISummonerProps { 4 | summoner: ISummoner; 5 | region: string; 6 | summonerName: string; 7 | leaguePositions: ILeaguePositions; 8 | trophyHunter: any; 9 | lastMatches: IMatchWithTimeline[]; 10 | } 11 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxDamageToChampions.js: -------------------------------------------------------------------------------- 1 | export const sr_maxDamageToChampions = { 2 | name: 'sr_maxDamageToChampions', 3 | title: 'Max damage to champions Summoners Rift', 4 | description: 'Maximum damage to champions in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalDamageDealtToChampions' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxVisionScorePerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxVisionScorePerMin = { 2 | name: 'sr_maxVisionScorePerMin', 3 | title: 'Max vision score per minute Summoners Rift', 4 | description: 'Maximum vision score per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'visionScorePerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/startup/withRouteParams.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { object } from 'prop-types'; 3 | 4 | export default Component => { 5 | const destructedComponent = ({ match: { params } }) => ; 6 | 7 | destructedComponent.propTypes = { 8 | match: object.isRequired 9 | }; 10 | 11 | return destructedComponent; 12 | }; 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Badges/Badges.stories.js: -------------------------------------------------------------------------------- 1 | import Badges from './Badges'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Badges', () => ( 6 | 14 | )); 15 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterAutoComplete/TrophyHunterAutoComplete.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyHunterAutoComplete from './TrophyHunterAutoComplete'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('TrophyHunterAutoComplete', () => { 6 | return ; 7 | }); 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxDamageTanked.js: -------------------------------------------------------------------------------- 1 | export const sr_maxDamageTanked = { 2 | name: 'sr_maxDamageTanked', 3 | title: 'Max damage tanked Summoners Rift', 4 | description: 5 | 'Maximum damage tanked (damage taken + self mitigated damage) in a game on Summoners Rift.', 6 | type: 'max', 7 | property: 'damageTanked' 8 | }; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxLongestTimeSpentLiving.js: -------------------------------------------------------------------------------- 1 | export const sr_maxLongestTimeSpentLiving = { 2 | name: 'sr_maxLongestTimeSpentLiving', 3 | title: 'Max time spent alive Summoners Rift', 4 | description: 'Maximum time spent alive in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'longestTimeSpentLiving' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LiveMatch/boxes/index.js: -------------------------------------------------------------------------------- 1 | export * from './_BuildsBox'; 2 | export * from './_DamageCompositionBox'; 3 | export * from './_GeneralBox'; 4 | export * from './_HeatmapBox'; 5 | export * from './_MatchesBox'; 6 | export * from './_MatchupBox'; 7 | export * from './_ParticipantBox'; 8 | export * from './_QuestsBox'; 9 | export * from './_SkillsBox'; 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/SkillOrder/SkillOrder.stories.js: -------------------------------------------------------------------------------- 1 | import SkillOrder from './SkillOrder'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import champions from '/imports/shared/riot-api/champions.ts'; 5 | 6 | const champion = champions[1]; 7 | storiesOf('Components', module).add('SkillOrder', () => ); 8 | -------------------------------------------------------------------------------- /packages/overwolf/shared/windows/controller.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestTrophyHunt.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestTrophyHunt = { 2 | name: 'sr_earliestTrophyHunt', 3 | title: 'Earliest trophy hunt Summoners Rift', 4 | description: 'Earliest trophy hunt (kill all five enemy champions) in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'earliestTrophyHunt' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxKillParticipations.js: -------------------------------------------------------------------------------- 1 | export const sr_maxKillParticipations = { 2 | name: 'sr_maxKillParticipations', 3 | title: 'Max kill participations Summoners Rift', 4 | description: 'Maximum kill participations (kills + assists) in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'killParticipations' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/store/actions/_encyclopedia.js: -------------------------------------------------------------------------------- 1 | import { CLOSE_ENCYCLOPEDIA, OPEN_ENCYCLOPEDIA } from '../types'; 2 | 3 | export const openEncyclopediaEntry = ({ tab, value }) => { 4 | return { 5 | type: OPEN_ENCYCLOPEDIA, 6 | tab, 7 | value 8 | }; 9 | }; 10 | 11 | export const closeEncyclopedia = () => { 12 | return { 13 | type: CLOSE_ENCYCLOPEDIA 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxTotalDamageToObjectives.js: -------------------------------------------------------------------------------- 1 | export const sr_maxTotalDamageToObjectives = { 2 | name: 'sr_maxTotalDamageToObjectives', 3 | title: 'Max total damage to objectives Summoners Rift', 4 | description: 'Maximum total damage to objectives in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalDamageToObjectives' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | [ 4 | '@babel/env', 5 | { 6 | modules: false 7 | } 8 | ], 9 | '@babel/react', 10 | '@babel/preset-typescript' 11 | ], 12 | plugins: ['@babel/proposal-class-properties', '@babel/plugin-transform-runtime'], 13 | env: { 14 | test: { 15 | presets: ['@babel/env'] 16 | } 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostCSStreak.js: -------------------------------------------------------------------------------- 1 | import { mostCSStreak as mostCSStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const mostCSStreak = { 4 | name: 'mostCSStreak', 5 | title: 'Most CS', 6 | description: 'Consecutive most minions killed.', 7 | type: 'straight', 8 | property: 'mostCS', 9 | badge: mostCSStreakBadge 10 | }; 11 | 12 | export default mostCSStreak; 13 | -------------------------------------------------------------------------------- /packages/app/template.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "twitchApiKey": "XXX", 3 | "public": { 4 | "version": "DEV", 5 | "trackingId": "XXX", 6 | "patreon": { 7 | "id": "XXX" 8 | } 9 | }, 10 | "discord": { 11 | "webhook": "https://discordapp.com/api/webhooks/XXX/XXX" 12 | }, 13 | "patreon": { 14 | "id": "XXX", 15 | "secret": "XXX", 16 | "accessToken": "XXX" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/creator/api/getRange.ts: -------------------------------------------------------------------------------- 1 | import RANGE from '../shared/champions/range'; 2 | 3 | const shapeshifters = ['Elise', 'Gnar', 'Kayle']; 4 | const getRange = ({ id, stats }) => { 5 | if (shapeshifters.includes(id)) { 6 | return RANGE.SHAPE_SHIFTER; 7 | } 8 | if (stats.attackrange < 300) { 9 | return RANGE.MELEE; 10 | } 11 | return RANGE.RANGED; 12 | }; 13 | 14 | export default getRange; 15 | -------------------------------------------------------------------------------- /packages/creator/components/LoadMatch.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { getMatchWithTimeline } from '../shared/th-api'; 3 | 4 | const LoadMatch = ({ onLoad, platformId, matchId }) => { 5 | const handleClick = () => { 6 | getMatchWithTimeline({ platformId, matchId }).then(onLoad); 7 | }; 8 | 9 | return ; 10 | }; 11 | 12 | export default LoadMatch; 13 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/_sr_earliestWin.js: -------------------------------------------------------------------------------- 1 | export const sr_earliestWin = { 2 | name: 'sr_earliestWin', 3 | title: 'Earliest win Summoners Rift', 4 | description: 'Earliest win in a game on Summoners Rift (no enemy team resigns).', 5 | type: 'max', 6 | property: 'earliestWin' // this becomes a new property because only non-resign game will count for this. 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/earliest/index.js: -------------------------------------------------------------------------------- 1 | export * from './_sr_earliestBaron'; 2 | export * from './_sr_earliestDragon'; 3 | export * from './_sr_earliestElderDragon'; 4 | export * from './_sr_earliestFirstTurret'; 5 | export * from './_sr_earliestKill'; 6 | export * from './_sr_earliestLevel18'; 7 | export * from './_sr_earliestWin'; 8 | export * from './_sr_earliestTrophyHunt'; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/index.js: -------------------------------------------------------------------------------- 1 | export * from './_sr_streakFirstBlood'; 2 | export * from './_sr_streakHighestDamageToChampions'; 3 | export * from './_sr_streakLeastDeaths'; 4 | export * from './_sr_streakLoss'; 5 | export * from './_sr_streakMostCs'; 6 | export * from './_sr_streakMostKills'; 7 | export * from './_sr_streakTrophyHunt'; 8 | export * from './_sr_streakWin'; 9 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/ErrorBoundary/ErrorBoundary.stories.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundary from './ErrorBoundary'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const Error = () => { 6 | return a.b; // eslint-disable-line 7 | }; 8 | storiesOf('Components', module).add('ErrorBoundary', () => ( 9 | 10 | 11 | 12 | )); 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeTrophies/TreeTrophies.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TreeTrophies from './TreeTrophies'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const trophyHunter = { 6 | treeTrophyNamesObtained: ['braum1', 'choGath1'] 7 | }; 8 | 9 | storiesOf('Components', module).add('TreeTrophies', () => ( 10 | 11 | )); 12 | -------------------------------------------------------------------------------- /packages/www/next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = phase => { 2 | return { 3 | env: { 4 | MATOMO_ID: '2', 5 | MATOMO_URL: 'https://matomo.machens.cloud/matomo.php' 6 | }, 7 | webpack(config) { 8 | config.resolve.modules.unshift(__dirname); 9 | config.resolve.symlinks = false; 10 | return config; 11 | }, 12 | target: 'server', 13 | distDir: 'dist' 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/app/imports/api/notifications/server/publications.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import Notifications from '../notifications'; 3 | 4 | Meteor.publish('notifications.private', function() { 5 | const userId = Meteor.userId(); 6 | if (!userId) { 7 | return this.ready(); 8 | } 9 | 10 | return Notifications.find({ userId }, { limit: 15, sort: { important: -1, createdAt: -1 } }); 11 | }); 12 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Items/Items.stories.js: -------------------------------------------------------------------------------- 1 | import Items from './Items'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const stats = { 6 | item0: 1001, 7 | item1: 1004, 8 | item2: 1006, 9 | item3: 1011, 10 | item4: 1026, 11 | item5: 1027, 12 | item6: 1028 13 | }; 14 | 15 | storiesOf('Components', module).add('Items', () => ); 16 | -------------------------------------------------------------------------------- /packages/shared/trophies/findPerk.ts: -------------------------------------------------------------------------------- 1 | const findPerk = ({ stats, perkId }: { stats: any; perkId: number }) => { 2 | for (let i = 0; i < 6; i++) { 3 | if (stats[`perk${i}`] === perkId) { 4 | return { 5 | var1: stats[`perk${i}Var1`], 6 | var2: stats[`perk${i}Var2`], 7 | var3: stats[`perk${i}Var3`] 8 | }; 9 | } 10 | } 11 | return null; 12 | }; 13 | 14 | export default findPerk; 15 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxDamageTankedPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxDamageTankedPerMin = { 2 | name: 'sr_maxDamageTankedPerMin', 3 | title: 'Max damage tanked per minute Summoners Rift', 4 | description: 5 | 'Maximum damage tanked (damage taken + self mitigated damage) per minute in a game on Summoners Rift.', 6 | type: 'max', 7 | property: 'damageTankedPerMinute' 8 | }; 9 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxDamageToChampionsPerMinute.js: -------------------------------------------------------------------------------- 1 | export const sr_maxDamageToChampionsPerMin = { 2 | name: 'sr_maxDamageToChampionsPerMin', 3 | title: 'Max damage to champions per minute Summoners Rift', 4 | description: 'Maximum damage to champions per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalDamageDealtToChampionsPerMinute' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/streaks/_sr_streakHighestDamageToChampions.js: -------------------------------------------------------------------------------- 1 | export const sr_streakHighestDamageToChampions = { 2 | name: 'sr_streakHighestDamageToChampions', 3 | title: 'longest highest damage to champions streak Summoners Rift', 4 | description: 'Longest highest damage to champions streak on Summoners Rift.', 5 | type: 'streak', 6 | property: 'highestDamageToChampions' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostKillsStreak.js: -------------------------------------------------------------------------------- 1 | import { mostKillsStreak as mostKillsStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const mostKillsStreak = { 4 | name: 'mostKillsStreak', 5 | title: 'Most Kills Streak', 6 | description: 'Consecutive most kills.', 7 | type: 'straight', 8 | property: 'mostKills', 9 | badge: mostKillsStreakBadge 10 | }; 11 | 12 | export default mostKillsStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxKillParticipationsPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxKillParticipationsPerMin = { 2 | name: 'sr_maxKillParticipationsPerMin', 3 | title: 'Max kill participations per minute Summoners Rift', 4 | description: 5 | 'Maximum kill participations (kills + assists) per minute in a game on Summoners Rift.', 6 | type: 'max', 7 | property: 'killParticipationsPerMin' 8 | }; 9 | -------------------------------------------------------------------------------- /packages/creator/layouts/Page.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Header from '../components/Header'; 3 | 4 | const Page = ({ children }) => ( 5 | <> 6 | 14 |
15 |
{children}
16 | 17 | ); 18 | 19 | export default Page; 20 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostDeathsStreak.js: -------------------------------------------------------------------------------- 1 | import { mostDeathsStreak as mostDeathsStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const mostDeathsStreak = { 4 | name: 'mostDeathsStreak', 5 | title: 'Most Deaths Streak', 6 | description: 'Consecutive most deaths.', 7 | type: 'straight', 8 | property: 'mostDeaths', 9 | badge: mostDeathsStreakBadge 10 | }; 11 | 12 | export default mostDeathsStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/firstBloodStreak.js: -------------------------------------------------------------------------------- 1 | import { firstBloodStreak as firstBloodStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const firstBloodStreak = { 4 | name: 'firstBloodStreak', 5 | title: 'First Blood Streak', 6 | description: 'Consecutive first bloods.', 7 | type: 'straight', 8 | property: 'firstBloodKill', 9 | badge: firstBloodStreakBadge 10 | }; 11 | 12 | export default firstBloodStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/api/summoner-stats/definitions/summoners-rift/maximum/_sr_maxTotalDamageToObjectivesPerMin.js: -------------------------------------------------------------------------------- 1 | export const sr_maxTotalDamageToObjectivesPerMin = { 2 | name: 'sr_maxTotalDamageToObjectivesPerMin', 3 | title: 'Max total damage to objectives per minute Summoners Rift', 4 | description: 'Maximum total damage to objectives per minute in a game on Summoners Rift.', 5 | type: 'max', 6 | property: 'totalDamageToObjectivesPerMin' 7 | }; 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/leastDeathsStreak.js: -------------------------------------------------------------------------------- 1 | import { leastDeathsStreak as leastDeathsStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const leastDeathsStreak = { 4 | name: 'leastDeathsStreak', 5 | title: 'Least Deaths Streak', 6 | description: 'Consecutive least deaths.', 7 | type: 'straight', 8 | property: 'leastDeaths', 9 | badge: leastDeathsStreakBadge 10 | }; 11 | 12 | export default leastDeathsStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/playstyle/Playstyle.stories.js: -------------------------------------------------------------------------------- 1 | import Playstyle from './Playstyle'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import playstyles from '../../../api/playstyles/playstyles'; 5 | 6 | const trophyHunter = { 7 | playstyle: playstyles.theBear, 8 | attributes: {} 9 | }; 10 | 11 | storiesOf('Components', module).add('Playstyle ', () => ); 12 | -------------------------------------------------------------------------------- /packages/app/imports/api/overwolf/normalizeRegion.js: -------------------------------------------------------------------------------- 1 | const regionsMap = { 2 | br1: 'br', 3 | eun1: 'eune', 4 | euw1: 'euw', 5 | jp1: 'jp', 6 | la1: 'lan', 7 | la2: 'las', 8 | na1: 'na', 9 | oc1: 'oce', 10 | tr1: 'tr' 11 | }; 12 | 13 | const normalizeRegion = region => { 14 | const normalizedRegion = regionsMap[region.toLowerCase()] || region; 15 | return normalizedRegion.toUpperCase(); 16 | }; 17 | 18 | export default normalizeRegion; 19 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostDamageStreak.js: -------------------------------------------------------------------------------- 1 | import { mostDamageStreak as mostDamageStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const mostDamageStreak = { 4 | name: 'mostDamageStreak', 5 | title: 'Most Damage Streak', 6 | description: 'Consecutive highest damage to champions.', 7 | type: 'straight', 8 | property: 'mostDamage', 9 | badge: mostDamageStreakBadge 10 | }; 11 | 12 | export default mostDamageStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TreeItem/TreeItem.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TreeItem from './TreeItem'; 3 | import { storiesOf } from '@storybook/react'; 4 | import zoe1 from '/imports/shared/trees/definitions/zoe1'; 5 | import assassinsCreed from '/imports/shared/trophies/definitions/assassinsCreed.ts'; 6 | 7 | storiesOf('Components', module).add('TreeItem', () => ( 8 | 9 | )); 10 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Navigation/Navigation.stories.js: -------------------------------------------------------------------------------- 1 | import Navigation from './Navigation'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('Navigation', () => ( 6 | 18 | )); 19 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/.versions: -------------------------------------------------------------------------------- 1 | base64@1.0.3 2 | binary-heap@1.0.3 3 | callback-hook@1.0.3 4 | check@1.0.5 5 | ddp@1.1.0 6 | ejson@1.0.6 7 | geojson-utils@1.0.3 8 | id-map@1.0.3 9 | json@1.0.3 10 | lmachens:user-presence@1.2.6 11 | local-test:lmachens:user-presence@1.2.6 12 | logging@1.0.7 13 | meteor@1.1.6 14 | minimongo@1.0.8 15 | mongo@1.1.0 16 | ordered-dict@1.0.3 17 | random@1.0.3 18 | retry@1.0.3 19 | tinytest@1.0.5 20 | tracker@1.0.7 21 | underscore@1.0.3 22 | -------------------------------------------------------------------------------- /packages/app/imports/startup/app/overlay.js: -------------------------------------------------------------------------------- 1 | import LiveMatch from '../../ui/pages/LiveMatch'; 2 | import OverlayLayout from '/imports/ui/layouts/OverlayLayout'; 3 | import React from 'react'; 4 | import { Route } from 'react-router-dom'; 5 | import withRouteParams from '../withRouteParams'; 6 | 7 | export default ( 8 | 9 | 10 | 11 | 12 | 13 | ); 14 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/pre-match/helpers/getRole.js: -------------------------------------------------------------------------------- 1 | export const getRole = championStats => { 2 | if (!championStats) { 3 | return null; 4 | } 5 | const roles = Object.keys(championStats); 6 | let mostPlayedRole; 7 | roles.forEach(role => { 8 | if ( 9 | !mostPlayedRole || 10 | championStats[mostPlayedRole].gamesPlayed < championStats[role].gamesPlayed 11 | ) { 12 | mostPlayedRole = role; 13 | } 14 | }); 15 | return mostPlayedRole; 16 | }; 17 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/mostVisionScoreStreak.js: -------------------------------------------------------------------------------- 1 | import { mostVisionScoreStreak as mostVisionScoreStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const mostVisionScoreStreak = { 4 | name: 'mostVisionScoreStreak', 5 | title: 'Highest Vision Score Streak', 6 | description: 'Consecutive highest vision score.', 7 | type: 'straight', 8 | property: 'mostVisionScore', 9 | badge: mostVisionScoreStreakBadge 10 | }; 11 | 12 | export default mostVisionScoreStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/store/reducers/_uiStates.js: -------------------------------------------------------------------------------- 1 | import { SET_UI_STATE } from '../types'; 2 | 3 | export const uiStates = ( 4 | state = { 5 | build: 'highestCount', 6 | startFrame: 1, 7 | endFrame: 4, 8 | matchType: 'matchup', 9 | skill: 'highestCount' 10 | }, 11 | action 12 | ) => { 13 | const { type, data } = action; 14 | switch (type) { 15 | case SET_UI_STATE: 16 | return { ...state, ...data.state }; 17 | default: 18 | return state; 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/leastVisionScoreStreak.js: -------------------------------------------------------------------------------- 1 | import { leastVisionScoreStreak as leastVisionScoreStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const leastVisionScoreStreak = { 4 | name: 'leastVisionScoreStreak', 5 | title: 'Lowest Vision Score Streak', 6 | description: 'Consecutive lowest vision score.', 7 | type: 'straight', 8 | property: 'leastVisionScore', 9 | badge: leastVisionScoreStreakBadge 10 | }; 11 | 12 | export default leastVisionScoreStreak; 13 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/BannedChampions/BannedChampions.stories.js: -------------------------------------------------------------------------------- 1 | import BannedChampions from './BannedChampions'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | storiesOf('Components', module).add('BannedChampions', () => ( 6 | 15 | )); 16 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/app/imports/store/reducers/_connectionStatus.js: -------------------------------------------------------------------------------- 1 | import { RECEIVE_CONNECTION_STATUS } from '../types'; 2 | 3 | export const connectionStatus = ( 4 | state = { 5 | status: 'connected', 6 | connected: true, 7 | retryCount: 0, 8 | retryTime: null 9 | }, 10 | action 11 | ) => { 12 | const { type, ...data } = action; 13 | switch (type) { 14 | case RECEIVE_CONNECTION_STATUS: 15 | return { ...data.connectionStatus }; 16 | default: 17 | return state; 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/app/imports/api/features/definitions/firstTurretPartStreak.js: -------------------------------------------------------------------------------- 1 | import { firstTurretPartStreak as firstTurretPartStreakBadge } from '/imports/api/badges/definitions'; 2 | 3 | const firstTurretPartStreak = { 4 | name: 'firstTurretPartStreak', 5 | title: 'First Turret Participation Streak', 6 | description: 'Consecutive first turret participations.', 7 | type: 'straight', 8 | property: 'firstTurretParticipation', 9 | badge: firstTurretPartStreakBadge 10 | }; 11 | 12 | export default firstTurretPartStreak; 13 | -------------------------------------------------------------------------------- /packages/overwolf/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "env", 5 | { 6 | "targets": { 7 | "chrome": 65 8 | }, 9 | "modules": false 10 | } 11 | ], 12 | "stage-2" 13 | ], 14 | "env": { 15 | "production": { 16 | "presets": [ 17 | [ 18 | "minify", 19 | { 20 | "builtIns": false, 21 | "evaluate": false, 22 | "mangle": false 23 | } 24 | ] 25 | ] 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/app/imports/api/badges/definitions/index.js: -------------------------------------------------------------------------------- 1 | export * from './_firstBloodStreak'; 2 | export * from './_firstTurretPartStreak'; 3 | export * from './_leastDeathsStreak'; 4 | export * from './_leastVisionScoreStreak'; 5 | export * from './_mostCSStreak'; 6 | export * from './_mostDamageStreak'; 7 | export * from './_mostDeathsStreak'; 8 | export * from './_mostKillsStreak'; 9 | export * from './_mostVisionScoreStreak'; 10 | export * from './_notEnoughMatches'; 11 | export * from './_premade'; 12 | export * from './_trophyHunter'; 13 | -------------------------------------------------------------------------------- /packages/shared/th-api/getMatchWithTimeline.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import getMatch from './getMatch'; 3 | import getTimeline from './getTimeline'; 4 | 5 | const getMatchWithTimeline = ({ platformId, matchId }) => { 6 | return Promise.all([ 7 | getMatch({ platformId, matchId }), 8 | getTimeline({ platformId, matchId }) 9 | ]).then( 10 | axios.spread((match, timeline) => { 11 | match.timeline = timeline; 12 | return match; 13 | }) 14 | ); 15 | }; 16 | 17 | export default getMatchWithTimeline; 18 | -------------------------------------------------------------------------------- /packages/app/imports/api/attributes/calculateAttributes.js: -------------------------------------------------------------------------------- 1 | import attributes from './attributes'; 2 | 3 | function calculateAttributes(trophiesObtained) { 4 | const obtainedAttributes = {}; 5 | 6 | Object.keys(attributes).forEach(key => { 7 | obtainedAttributes[key] = 0; 8 | }); 9 | trophiesObtained.forEach(({ trophy }) => { 10 | if (trophy.attribute) { 11 | obtainedAttributes[trophy.attribute] += trophy.score; 12 | } 13 | }); 14 | return obtainedAttributes; 15 | } 16 | 17 | export default calculateAttributes; 18 | -------------------------------------------------------------------------------- /packages/app/imports/api/server-stats/server/collection.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const ServerStats = new Mongo.Collection('ServerStats'); 5 | 6 | ServerStats.schema = new SimpleSchema({ 7 | name: { type: String }, 8 | connections: { type: Number }, 9 | primary: { type: Boolean, optional: true }, 10 | createdAt: { type: Date }, 11 | updatedAt: { type: Date } 12 | }); 13 | 14 | ServerStats.attachSchema(ServerStats.schema); 15 | 16 | export default ServerStats; 17 | -------------------------------------------------------------------------------- /packages/app/imports/store/reducers/_encyclopedia.js: -------------------------------------------------------------------------------- 1 | import { CLOSE_ENCYCLOPEDIA, OPEN_ENCYCLOPEDIA } from '../types'; 2 | 3 | export const encyclopediaDialog = ( 4 | state = { 5 | open: false 6 | }, 7 | action 8 | ) => { 9 | const { type, ...data } = action; 10 | switch (type) { 11 | case OPEN_ENCYCLOPEDIA: 12 | return { ...state, open: true, tab: data.tab, value: data.value }; 13 | case CLOSE_ENCYCLOPEDIA: 14 | return { ...state, open: false }; 15 | default: 16 | return state; 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Matches/Matches.stories.js: -------------------------------------------------------------------------------- 1 | import { Matches } from './Matches'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const lastMatches = [ 6 | { 7 | championId: 69, 8 | game: { 9 | gameQueueConfigId: 440 10 | }, 11 | checkedStatus: 'inProgress', 12 | createdAt: new Date(), 13 | isMatched: () => true 14 | } 15 | ]; 16 | storiesOf('Components', module).add('Matches', () => ( 17 | 18 | )); 19 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophiesObtained/TrophiesObtained.stories.js: -------------------------------------------------------------------------------- 1 | import TrophiesObtained from './TrophiesObtained'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const extendedMatchResult = { 6 | platformId: 'NA1', 7 | participantIdentity: { 8 | player: { 9 | summonerId: 1 10 | } 11 | }, 12 | gameId: 123 13 | }; 14 | 15 | storiesOf('Components', module).add('TrophiesObtained', () => ( 16 | 17 | )); 18 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/patreon/PatreonAccount.js: -------------------------------------------------------------------------------- 1 | import React, { PureComponent } from 'react'; 2 | 3 | import PropTypes from 'prop-types'; 4 | 5 | class PatreonAccount extends PureComponent { 6 | render() { 7 | const { patreon } = this.props; 8 | if (!patreon) return null; 9 | 10 | return ( 11 |
12 | Connected to {patreon.fullName} 13 |
14 | ); 15 | } 16 | } 17 | 18 | PatreonAccount.propTypes = { 19 | patreon: PropTypes.object 20 | }; 21 | 22 | export default PatreonAccount; 23 | -------------------------------------------------------------------------------- /packages/app/imports/api/ranking/server/_calculateSeasonPoints.js: -------------------------------------------------------------------------------- 1 | import { getFirstTimeBonus, getTreeBonus } from '/imports/api/trophies'; 2 | 3 | export const calculateSeasonPoints = trophies => 4 | trophies.reduce((points, { trophy, isNew, newInTrees }) => { 5 | let newPoints = points + trophy.score; 6 | if (isNew) newPoints += getFirstTimeBonus(trophy); 7 | // it is possible that a trophy is in multiple trees. give bonus for every tree. 8 | newPoints += newInTrees.length * getTreeBonus(trophy); 9 | return newPoints; 10 | }, 0); 11 | -------------------------------------------------------------------------------- /packages/app/packages/user-presence/.npm/package/npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "lockfileVersion": 1, 3 | "dependencies": { 4 | "colors": { 5 | "version": "1.1.2", 6 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 7 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" 8 | }, 9 | "lodash.throttle": { 10 | "version": "4.1.1", 11 | "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", 12 | "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/app/.storybook/stubs/meteor/meteor.js: -------------------------------------------------------------------------------- 1 | const { Mongo } = require('./mongo'); 2 | 3 | export const Meteor = { 4 | isServer: true, 5 | loginWithPassword: () => {}, 6 | loginWithFacebook: () => {}, 7 | methods: () => {}, 8 | call: () => {}, 9 | publish: () => {}, 10 | subscribe: () => {}, 11 | user: () => {}, 12 | users: new Mongo.Collection(), 13 | userId: () => 'someRandomUserId', 14 | startup: () => {}, 15 | bindEnvironment: () => {}, 16 | wrapAsync: () => {}, 17 | Error: () => Error, 18 | absoluteUrl: url => url 19 | }; 20 | -------------------------------------------------------------------------------- /packages/app/imports/api/ranking/seasons.js: -------------------------------------------------------------------------------- 1 | export const SEASONS = { 2 | S9: 'S9', 3 | S8: 'S8', 4 | ALLTIME: 'alltime', 5 | TOURNAMENT1: 'tournament1' 6 | }; 7 | 8 | export const fieldsBySeason = { 9 | [SEASONS.ALLTIME]: 'rank', 10 | [SEASONS.S9]: 's9Rank', 11 | [SEASONS.S8]: 'seasonRank', 12 | [SEASONS.TOURNAMENT1]: 'tournamentRank' 13 | }; 14 | 15 | export const scoreFieldsBySeason = { 16 | [SEASONS.ALLTIME]: 'score', 17 | [SEASONS.S9]: 's9Score', 18 | [SEASONS.S8]: 'seasonScore', 19 | [SEASONS.TOURNAMENT1]: 'tournamentScore' 20 | }; 21 | -------------------------------------------------------------------------------- /packages/www/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "allowSyntheticDefaultImports": true, 5 | "baseUrl": ".", 6 | "esModuleInterop": true, 7 | "jsx": "react", 8 | "module": "esnext", 9 | "moduleResolution": "node", 10 | "noEmit": true, 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "preserveConstEnums": true, 14 | "removeComments": false, 15 | "skipLibCheck": true, 16 | "sourceMap": true, 17 | "strict": true, 18 | "target": "esnext" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/app/imports/startup/app/live.js: -------------------------------------------------------------------------------- 1 | import LiveMatch from '../../ui/pages/LiveMatch'; 2 | import OverlayLayout from '/imports/ui/layouts/OverlayLayout'; 3 | import React from 'react'; 4 | import { Route } from 'react-router-dom'; 5 | import withRouteParams from '../withRouteParams'; 6 | 7 | export default ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | -------------------------------------------------------------------------------- /packages/www/utilities/matomo/index.ts: -------------------------------------------------------------------------------- 1 | import https from 'https'; 2 | import querystring from 'querystring'; 3 | 4 | export const track = (options: string | any) => { 5 | if (typeof options === 'string') { 6 | options = { 7 | url: options 8 | }; 9 | } 10 | 11 | // Set mandatory options 12 | options = options || {}; 13 | options.idsite = process.env.MATOMO_ID; 14 | options.rec = 1; 15 | 16 | const requestUrl = process.env.MATOMO_URL + '?' + querystring.stringify(options); 17 | 18 | const req = https.get(requestUrl); 19 | req.end(); 20 | }; 21 | -------------------------------------------------------------------------------- /packages/app/imports/store/actions/index.js: -------------------------------------------------------------------------------- 1 | export * from './_account'; 2 | export * from './_championStats'; 3 | export * from './_championMatches'; 4 | export * from './_connectionStatus'; 5 | export * from './_encyclopedia'; 6 | export * from './_liveMatch'; 7 | export * from './_matchupMatches'; 8 | export * from './_matchupStats'; 9 | export * from './_participantMatches'; 10 | export * from './_participantsHeatmap'; 11 | export * from './_participantsPerformance'; 12 | export * from './_playedTogether'; 13 | export * from './_trophyStats'; 14 | export * from './_uiStates'; 15 | -------------------------------------------------------------------------------- /packages/shared/matches/extendMatchResult/getParticipantIdentity.ts: -------------------------------------------------------------------------------- 1 | interface GetParticipantIdentityProps { 2 | participantIdentities: any[]; 3 | summonerId: number | string; 4 | summonerName?: string; 5 | } 6 | 7 | export default function getParticipantIdentity({ 8 | participantIdentities, 9 | summonerId, 10 | summonerName 11 | }: GetParticipantIdentityProps) { 12 | return participantIdentities.find( 13 | identity => 14 | identity.player && 15 | (identity.player.summonerId === summonerId || identity.player.summonerName === summonerName) 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /packages/creator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": false, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve" 16 | }, 17 | "exclude": ["node_modules"], 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "allowSyntheticDefaultImports": true, 5 | "baseUrl": ".", 6 | "esModuleInterop": true, 7 | "module": "commonjs", 8 | "moduleResolution": "node", 9 | "noEmit": true, 10 | "noUnusedLocals": true, 11 | "noUnusedParameters": true, 12 | "preserveConstEnums": true, 13 | "removeComments": false, 14 | "skipLibCheck": true, 15 | "sourceMap": true, 16 | "strict": false, 17 | "target": "esnext", 18 | "outDir": "./dist" 19 | }, 20 | "exclude": ["node_modules"] 21 | } 22 | -------------------------------------------------------------------------------- /packages/overwolf/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trophy-hunter-overwolf", 3 | "description": "Trophy Hunter Overwolf", 4 | "version": "0.0.1", 5 | "license": "AGPL-3.0", 6 | "scripts": { 7 | "build": "cross-env BABEL_ENV=development babel development -d ../../dist/development --copy-files && cross-env BABEL_ENV=production babel production -d ../../dist/production --copy-files" 8 | }, 9 | "devDependencies": { 10 | "babel-cli": "6.26.0", 11 | "babel-preset-env": "1.7.0", 12 | "babel-preset-minify": "0.5.0", 13 | "babel-preset-stage-2": "6.24.1", 14 | "cross-env": "5.2.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/www/components/Matches/Matches.tsx: -------------------------------------------------------------------------------- 1 | import Match from 'components/Match'; 2 | import React, { FunctionComponent } from 'react'; 3 | import { IMatchWithTimeline } from 'shared/riot-api/typings'; 4 | 5 | interface MatchesProps { 6 | matches: IMatchWithTimeline[]; 7 | summonerName: string; 8 | } 9 | 10 | const Matches: FunctionComponent = ({ matches, summonerName }) => { 11 | return ( 12 | <> 13 | {matches.map(match => ( 14 | 15 | ))} 16 | 17 | ); 18 | }; 19 | 20 | export default Matches; 21 | -------------------------------------------------------------------------------- /packages/app/imports/startup/server/process.js: -------------------------------------------------------------------------------- 1 | console.log('Started with Node', process.version); 2 | 3 | process.on('beforeExit', code => { 4 | console.log('beforeExit', code); 5 | }); 6 | 7 | process.on('exit', code => { 8 | console.log('exit', code); 9 | }); 10 | 11 | process.on('SIGINT', code => { 12 | console.log('SIGINT', code); 13 | }); 14 | 15 | process.on('SIGUSR1', code => { 16 | console.log('SIGUSR1', code); 17 | }); 18 | 19 | process.on('SIGUSR2', code => { 20 | console.log('SIGUSR2', code); 21 | }); 22 | 23 | process.on('uncaughtException', code => { 24 | console.log('uncaughtException', code); 25 | }); 26 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Ranking/Ranking.stories.js: -------------------------------------------------------------------------------- 1 | import Ranking from './Ranking'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import { SEASONS } from '../../../api/ranking/seasons'; 5 | 6 | const trophyHunter = { 7 | summonerName: 'Summoner', 8 | region: 'EUW', 9 | features: { 10 | games: 123, 11 | wins: 57 12 | }, 13 | items: {}, 14 | trees: {}, 15 | rank: 104, 16 | score: 1002, 17 | trophiesObtained: [] 18 | }; 19 | 20 | storiesOf('Components', module).add('Ranking', () => ( 21 | 22 | )); 23 | -------------------------------------------------------------------------------- /packages/www/components/Link/Link.tsx: -------------------------------------------------------------------------------- 1 | import { Link as MuiLink } from '@material-ui/core'; 2 | import NextLink from 'next/link'; 3 | import React from 'react'; 4 | 5 | import { makeStyles } from '@material-ui/styles'; 6 | 7 | const useStyles = makeStyles({ 8 | link: { 9 | cursor: 'pointer' 10 | } 11 | }); 12 | 13 | const Link = ({ children, href, ...other }) => { 14 | const classes = useStyles(); 15 | 16 | return ( 17 | 18 | 19 | {children} 20 | 21 | 22 | ); 23 | }; 24 | 25 | export default Link; 26 | -------------------------------------------------------------------------------- /packages/app/imports/api/attributes/updateAttributes.js: -------------------------------------------------------------------------------- 1 | const attributeDecayRate = 0.95; // this means that the old value determines the new value to 95%. 2 | 3 | function updateAttributes(obtainedAttributes, trophyHunter) { 4 | if (!trophyHunter.attributes) { 5 | trophyHunter.attributes = {}; 6 | } 7 | Object.entries(obtainedAttributes).forEach(([key, value]) => { 8 | if (!trophyHunter.attributes[key]) { 9 | trophyHunter.attributes[key] = value; 10 | } else { 11 | trophyHunter.attributes[key] = trophyHunter.attributes[key] * attributeDecayRate + value; 12 | } 13 | }); 14 | } 15 | 16 | export default updateAttributes; 17 | -------------------------------------------------------------------------------- /packages/app/imports/startup/app/server/index.js: -------------------------------------------------------------------------------- 1 | import '../../server/colors'; 2 | import './register-api'; 3 | import './user-presence'; 4 | import '../../server/mongo'; 5 | import '../../server/process'; 6 | import '../../server/admin'; 7 | import '../../server/login'; 8 | import './jobs'; 9 | 10 | import TrophyStats from '/imports/api/trophies/trophyStats'; 11 | import trophies from '/imports/shared/trophies/index.ts'; 12 | 13 | Object.values(trophies).forEach(trophy => { 14 | if (!TrophyStats.findOne({ trophyName: trophy.name })) { 15 | TrophyStats.insert({ trophyName: trophy.name, totalCount: 0, distinctTrophyHunters: 0 }); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /packages/shared/matches/extendMatchResult/extendGeneralGroups.ts: -------------------------------------------------------------------------------- 1 | export default function extendGeneralGroups(extendedMatchResult) { 2 | extendedMatchResult.teams[0].participants = extendedMatchResult.participants.filter( 3 | participant => { 4 | return participant.teamId === 100; 5 | } 6 | ); 7 | extendedMatchResult.teams[0].opponentTeam = extendedMatchResult.teams[1]; 8 | extendedMatchResult.teams[1].participants = extendedMatchResult.participants.filter( 9 | participant => { 10 | return participant.teamId === 200; 11 | } 12 | ); 13 | extendedMatchResult.teams[1].opponentTeam = extendedMatchResult.teams[0]; 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "./", 4 | "jsx": "react", 5 | "allowJs": true, 6 | "allowSyntheticDefaultImports": true, 7 | "baseUrl": ".", 8 | "esModuleInterop": true, 9 | "noEmit": true, 10 | "module": "commonjs", 11 | "moduleResolution": "node", 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "preserveConstEnums": true, 15 | "removeComments": false, 16 | "skipLibCheck": true, 17 | "strict": false, 18 | "target": "esnext", 19 | "outDir": "./dist" 20 | }, 21 | "include": ["**/*.ts", "**/*.tsx"], 22 | "exclude": ["node_modules"] 23 | } 24 | -------------------------------------------------------------------------------- /packages/app/imports/api/attributes/attributes.js: -------------------------------------------------------------------------------- 1 | import capability from './definitions/capability'; 2 | import combat from './definitions/combat'; 3 | import cooperation from './definitions/cooperation'; 4 | import cunning from './definitions/cunning'; 5 | import lethality from './definitions/lethality'; 6 | import power from './definitions/power'; 7 | import robustness from './definitions/robustness'; 8 | import wisdom from './definitions/wisdom'; 9 | 10 | const attributes = { 11 | cooperation, 12 | cunning, 13 | robustness, 14 | combat, 15 | capability, 16 | lethality, 17 | power, 18 | wisdom 19 | }; 20 | 21 | export default attributes; 22 | -------------------------------------------------------------------------------- /packages/app/imports/api/trophy-hunters/server/methods/readChangelog.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import TrophyHunters from '../../trophyHunters'; 3 | 4 | const serverVersion = Meteor.settings && Meteor.settings.public.version; 5 | 6 | const readChangelog = function() { 7 | // Make sure the user is logged in 8 | const userId = Meteor.userId(); 9 | if (!userId) { 10 | throw new Meteor.Error('not-authorized'); 11 | } 12 | 13 | return TrophyHunters.update( 14 | { userId }, 15 | { 16 | $set: { 17 | lastVersion: serverVersion 18 | } 19 | } 20 | ); 21 | }; 22 | 23 | export default readChangelog; 24 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LiveMatch/boxes/_MatchupBox.js: -------------------------------------------------------------------------------- 1 | import { Box, BoxContent } from '../../generic'; 2 | import React, { PureComponent } from 'react'; 3 | 4 | import { Matchup } from './partials/_Matchup'; 5 | import PropTypes from 'prop-types'; 6 | 7 | class MatchupBox extends PureComponent { 8 | render() { 9 | const { className } = this.props; 10 | return ( 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | } 18 | } 19 | 20 | MatchupBox.propTypes = { 21 | className: PropTypes.string 22 | }; 23 | 24 | export { MatchupBox }; 25 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LotteryWin/LotteryWin.stories.js: -------------------------------------------------------------------------------- 1 | import { LotteryWin } from './LotteryWin'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import { LOTTERY_TYPES } from '../../../api/lotteries/lotteries'; 5 | 6 | const lottery = { 7 | prices: [ 8 | { winner: { userId: 123 }, type: LOTTERY_TYPES.RP_CODE_10 }, 9 | { winner: { userId: 345 }, type: LOTTERY_TYPES.RP_CODE_10 } 10 | ] 11 | }; 12 | 13 | storiesOf('Components', module) 14 | .add('LotteryWin:Loss', () => ) 15 | .add('LotteryWin:Win', () => ); 16 | -------------------------------------------------------------------------------- /packages/shared/trophies/definitions/trinityForce.ts: -------------------------------------------------------------------------------- 1 | import SCORES from '../scores'; 2 | 3 | const trinityForce = { 4 | name: 'trinityForce', 5 | title: 'Trinity Force', 6 | description: 7 | 'Use your powerspike. Kill an opponent in the three minutes after you finish trinity force.', 8 | svgPath: 9 | 'M256 59.72L142.687 256h226.625L256 59.72zM369.313 256L256 452.28h226.625L369.312 256zM256 452.28L142.687 256 29.376 452.28H256z', 10 | score: SCORES.MEDIUM, 11 | obtainedCheck: ({ match }) => match.participant.stats.trinityForceKills >= 1, 12 | context: 'matches', 13 | attribute: 'lethality' 14 | }; 15 | 16 | export default trinityForce; 17 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | - **Please check these requirements** 2 | 3 | - [ ] The commit message follows [our guidelines](https://www.conventionalcommits.org/) 4 | - [ ] Docs/Changelog have been added / updated (for bug fixes / features) 5 | 6 | 7 | - **What is the current behavior?** (You can also link to an open issue here) 8 | 9 | 10 | 11 | - **What is the new behavior (if this is a feature change)?** 12 | 13 | 14 | 15 | - **How did you test your changes?** 16 | 17 | 18 | 19 | - **What changes might devs need to make due to this PR?** (like updating settings or deps with `yarn install`?) 20 | 21 | 22 | 23 | - **Other information**: 24 | 25 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | name: 'lmachens:multiple-instances-status', 3 | summary: 'Keep a collection with active servers/instances', 4 | version: '1.0.6_1', 5 | git: 'https://github.com/Konecty/meteor-multiple-instances-status' 6 | }); 7 | 8 | Package.onUse(function(api) { 9 | api.versionsFrom('1.0.2.1'); 10 | 11 | api.use('ecmascript'); 12 | api.use('random'); 13 | 14 | api.addFiles('multiple-instances-status.js', ['server']); 15 | 16 | api.export(['InstanceStatus'], ['server']); 17 | }); 18 | 19 | Package.onTest(function(api) {}); 20 | 21 | Npm.depends({ 22 | colors: '1.1.2' 23 | }); 24 | -------------------------------------------------------------------------------- /packages/app/imports/api/matchup/server/_methods.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import { check } from 'meteor/check'; 3 | import { getMatchup } from '/imports/shared/th-api/index.ts'; 4 | 5 | Meteor.methods({ 6 | async getMatchupMatches(props) { 7 | this.unblock(); 8 | 9 | check(props, { 10 | champ1Id: Number, 11 | champ2Id: Number, 12 | mapId: Number 13 | }); 14 | const { champ1Id, champ2Id, mapId } = props; 15 | 16 | try { 17 | return await getMatchup({ champ1Id, champ2Id, mapId }); 18 | } catch (error) { 19 | console.error(error.message); 20 | throw error.message; 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /packages/app/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | 1.4.3-split-account-service-packages 17 | 1.5-add-dynamic-import-package 18 | 1.7-split-underscore-from-meteor-base 19 | -------------------------------------------------------------------------------- /packages/app/packages/multiple-instances-status/HISTORY.md: -------------------------------------------------------------------------------- 1 | # 1.0.3 (2014-01-22) 2 | * Change defaultPingInterval from 5s to 2s and Instance TTL from 10s to 60s 3 | * Save name and extraInformation in InstaceStatus object 4 | * Register instance again if no instance was updated on ping 5 | * Fix spelling 6 | * Register pid with instance information 7 | * Emit events on registerInstance and unregisterInstance 8 | 9 | # 1.0.4 (2016-01-26) 10 | * Use $currentDate to set correct date into MongoDB 11 | 12 | # 1.0.5 (2016-01-26) 13 | * Fix error introduced by previous commit when extraInformation is setted 14 | 15 | # 1.0.6 (2016-01-30) 16 | * Closes #1; Can't add package on Windows 10 17 | -------------------------------------------------------------------------------- /packages/app/imports/store/actions/_helpers.js: -------------------------------------------------------------------------------- 1 | const shouldFetch = (state, ttl) => { 2 | if (!state) return true; 3 | if (state.isFetching && Date.now() - state.lastUpdated > 10000) return true; 4 | if (state.error) return true; 5 | return Date.now() - state.lastUpdated > ttl; 6 | }; 7 | 8 | export const fetchIfNeeded = (fetchFunction, reducer, ttl = 1000 * 60 * 60 * 30) => identifier => { 9 | return (dispatch, getState) => { 10 | const state = getState()[reducer][identifier]; 11 | if (shouldFetch(state, ttl)) { 12 | setTimeout(() => { 13 | dispatch(fetchFunction(identifier)); 14 | }, 0); 15 | } 16 | return Promise.resolve(); 17 | }; 18 | }; 19 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/DamageComposition/DamageComposition.stories.js: -------------------------------------------------------------------------------- 1 | import DamageComposition from './DamageComposition'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const participants = [ 6 | { 7 | roleStats: { 8 | damageComposition: { 9 | totalTrue: 0.1, 10 | totalMagical: 0.4, 11 | totalPhysical: 0.5 12 | } 13 | } 14 | } 15 | ]; 16 | 17 | storiesOf('Components', module).add('DamageComposition', () => ( 18 | 25 | )); 26 | -------------------------------------------------------------------------------- /packages/www/pages/match.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Match from '../components/Match'; 3 | import Page from '../layouts/Page'; 4 | import { getMatchWithTimeline } from '../shared/th-api'; 5 | 6 | const MatchPage = props => ( 7 | 8 | 9 | 10 | ); 11 | 12 | MatchPage.getInitialProps = async ({ query }) => { 13 | const { platformId, matchId, summonerName } = query; 14 | if (!platformId || !matchId) { 15 | throw new Error('invalid query'); 16 | } 17 | 18 | const match = await getMatchWithTimeline({ platformId, matchId }); 19 | 20 | return { match, summonerName }; 21 | }; 22 | 23 | export default MatchPage; 24 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/Timeline/Timeline.stories.js: -------------------------------------------------------------------------------- 1 | import Timeline from './Timeline'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | 5 | const matchWithTimeline = { 6 | mapId: 12, 7 | participants: [], 8 | timeline: { 9 | frames: [ 10 | { 11 | participantFrames: [], 12 | events: [] 13 | } 14 | ] 15 | } 16 | }; 17 | 18 | const extendedMatchResult = { 19 | teams: [{ bans: [] }, { bans: [] }], 20 | ...matchWithTimeline 21 | }; 22 | 23 | storiesOf('Components', module).add('Timeline', () => ( 24 | 25 | )); 26 | -------------------------------------------------------------------------------- /packages/www/components/KDA/KDA.tsx: -------------------------------------------------------------------------------- 1 | import { Tooltip, Typography } from '@material-ui/core'; 2 | import { TypographyProps } from '@material-ui/core/Typography'; 3 | import React, { FunctionComponent } from 'react'; 4 | 5 | interface KDAProps extends TypographyProps { 6 | kills: number; 7 | deaths: number; 8 | assists: number; 9 | } 10 | 11 | const KDA: FunctionComponent = ({ kills, deaths, assists, ...other }) => { 12 | return ( 13 | 14 | 15 | {kills}/{deaths}/{assists} 16 | 17 | 18 | ); 19 | }; 20 | 21 | export default KDA; 22 | -------------------------------------------------------------------------------- /packages/app/imports/api/trophy-hunters/server/methods/_getTrophyHunterByName.js: -------------------------------------------------------------------------------- 1 | import TrophyHunters from '../../trophyHunters'; 2 | import { check } from 'meteor/check'; 3 | 4 | const getTrophyHunterByName = function(name) { 5 | check(name, String); 6 | this.unblock(); 7 | 8 | return TrophyHunters.find( 9 | { 10 | summonerName: new RegExp(name, 'ig') 11 | }, 12 | { 13 | fields: { userId: 1, summonerName: 1, region: 1 }, 14 | limit: 5 15 | } 16 | ) 17 | .fetch() 18 | .map(({ userId, summonerName, region }) => ({ 19 | userId, 20 | fullName: `${summonerName} (${region})` 21 | })); 22 | }; 23 | 24 | export { getTrophyHunterByName }; 25 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/LiveMatch/boxes/_GeneralBox.js: -------------------------------------------------------------------------------- 1 | import { Box, BoxContent } from '../../generic'; 2 | import React, { PureComponent } from 'react'; 3 | 4 | import { General } from './partials/_General'; 5 | import PropTypes from 'prop-types'; 6 | 7 | class GeneralBox extends PureComponent { 8 | render() { 9 | const { className } = this.props; 10 | return ( 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | } 18 | } 19 | 20 | GeneralBox.propTypes = { 21 | className: PropTypes.string, 22 | renderBackground: PropTypes.bool 23 | }; 24 | 25 | export { GeneralBox }; 26 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyHunterAvatar/TrophyHunterAvatar.js: -------------------------------------------------------------------------------- 1 | import AvatarWithStatus from '../AvatarWithStatus'; 2 | import { JoinClient } from 'meteor-publish-join'; 3 | import { Meteor } from 'meteor/meteor'; 4 | import { withTracker } from 'meteor/react-meteor-data'; 5 | 6 | const TrophyHunterAvatarContainer = withTracker(({ userId }) => { 7 | Meteor.subscribe('trophyHunters.public', [userId]); 8 | 9 | const trophyHunters = JoinClient.get(`trophyHunters${JSON.stringify([userId])}`); 10 | const trophyHunter = trophyHunters && trophyHunters[0]; 11 | 12 | return { 13 | trophyHunter 14 | }; 15 | })(AvatarWithStatus); 16 | 17 | export default TrophyHunterAvatarContainer; 18 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TrophyStats/TrophyStats.stories.js: -------------------------------------------------------------------------------- 1 | import TrophyStats from './TrophyStats'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import trophies from '/imports/shared/trophies/index.ts'; 5 | import { store } from '../../../store/store'; 6 | import { receiveTrophyStats } from '../../../store/actions'; 7 | 8 | const trophy = trophies.adventurer; 9 | 10 | storiesOf('Components', module).add('TrophyStats', () => { 11 | store.dispatch( 12 | receiveTrophyStats(trophy.name, { 13 | totalCount: 123, 14 | distinctTrophyHunters: 42 15 | }) 16 | ); 17 | return ; 18 | }); 19 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/TimelineParticipant/TimelineParticipant.stories.js: -------------------------------------------------------------------------------- 1 | import TimelineParticipant from './TimelineParticipant'; 2 | import React from 'react'; 3 | import { storiesOf } from '@storybook/react'; 4 | import champions from '/imports/shared/riot-api/champions.ts'; 5 | 6 | const participant = { 7 | spell1Id: 1, 8 | spell2Id: 3 9 | }; 10 | 11 | const participantIdentity = { 12 | player: { 13 | summonerName: 'Summoner' 14 | } 15 | }; 16 | 17 | storiesOf('Components', module).add('TimelineParticipant', () => ( 18 | 23 | )); 24 | -------------------------------------------------------------------------------- /packages/www/README.md: -------------------------------------------------------------------------------- 1 | Trophy Hunter 2 | 3 | # Trophy Hunter Web 4 | 5 | This package hosts the web version of Trophy Hunter which is deployed on [th.gl](https://th.gl). 6 | 7 | ## Technical background 8 | 9 | It is based on: 10 | - [Next.js](https://nextjs.org/) a [React](https://reactjs.org/) Framework 11 | - [Material-UI](https://material-ui.com/) that implements Google's Material Design 12 | - [Zeit Now](https://zeit.co/now) for serverless deployments. 13 | 14 | ## Development 15 | 16 | Install the package in your project directory with: 17 | 18 | `yarn` 19 | 20 | Run dev server with: 21 | 22 | `yarn dev` 23 | -------------------------------------------------------------------------------- /packages/app/.storybook/config.js: -------------------------------------------------------------------------------- 1 | import '../client/index.css'; 2 | 3 | import { addDecorator, configure } from '@storybook/react'; 4 | 5 | import { Provider } from 'react-redux'; 6 | import React from 'react'; 7 | import StorybookLayout from '../imports/ui/layouts/StorybookLayout'; 8 | import { store } from '../imports/store/store'; 9 | 10 | const Decorator = fn => ( 11 | 12 | {fn()} 13 | 14 | ); 15 | addDecorator(Decorator); 16 | 17 | const req = require.context('../imports', true, /\.stories\.js$/); 18 | 19 | function loadStories() { 20 | req.keys().forEach(filename => req(filename)); 21 | } 22 | 23 | configure(loadStories, module); 24 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_BoxContent.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | import { withStyles } from './_Styles'; 4 | 5 | const styles = { 6 | paper: { 7 | position: 'relative', 8 | height: '100%', 9 | overflow: 'auto', 10 | margin: 1 11 | } 12 | }; 13 | 14 | const BoxContent = ({ children, classes, ...other }) => ( 15 |
16 | {children} 17 |
18 | ); 19 | 20 | BoxContent.propTypes = { 21 | classes: PropTypes.object.isRequired, 22 | children: PropTypes.node.isRequired 23 | }; 24 | 25 | const enhanced = withStyles(styles)(BoxContent); 26 | 27 | export { enhanced as BoxContent }; 28 | -------------------------------------------------------------------------------- /packages/shared/trophies/getTrophiesCategory.ts: -------------------------------------------------------------------------------- 1 | import { ARAM, SUMMONERS_RIFT } from './types'; 2 | 3 | import { MATCHMAKING } from '../riot-api/gameConstants'; 4 | 5 | const summonersRift = [ 6 | MATCHMAKING.NORMAL_5x5_DRAFT, 7 | MATCHMAKING.NORMAL_DRAFT_PICK_5x5, 8 | MATCHMAKING.RANKED_SOLO_SR, 9 | MATCHMAKING.RANKED_FLEX_SR, 10 | MATCHMAKING.TB_BLIND_SUMMONERS_RIFT_5x5 11 | ]; 12 | 13 | const aram = [MATCHMAKING.ARAM_5v5, MATCHMAKING.BILGEWATER_ARAM_5x5]; 14 | 15 | const getTrophiesCategory = queueId => { 16 | if (summonersRift.includes(queueId)) { 17 | return SUMMONERS_RIFT; 18 | } 19 | if (aram.includes(queueId)) { 20 | return ARAM; 21 | } 22 | }; 23 | 24 | export default getTrophiesCategory; 25 | -------------------------------------------------------------------------------- /packages/app/imports/store/actions/_connectionStatus.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | import { RECEIVE_CONNECTION_STATUS } from '../types'; 3 | import { Tracker } from 'meteor/tracker'; 4 | 5 | let called = false; 6 | export const trackConnectionStatus = () => { 7 | if (!called) { 8 | called = true; 9 | return dispatch => { 10 | Tracker.autorun(() => { 11 | const connectionStatus = Meteor.connection.status(); 12 | dispatch({ 13 | type: RECEIVE_CONNECTION_STATUS, 14 | connectionStatus 15 | }); 16 | }); 17 | }; 18 | } 19 | }; 20 | 21 | export const reconnect = () => { 22 | return () => { 23 | Meteor.connection.reconnect(); 24 | }; 25 | }; 26 | -------------------------------------------------------------------------------- /packages/app/imports/api/playstyles/calculatePlaystyle.js: -------------------------------------------------------------------------------- 1 | import playstyles from './playstyles'; 2 | 3 | function calculatePlaystyle(attributes) { 4 | let maxScore = 0; 5 | let maxPlaystyle = playstyles.unknown; 6 | Object.values(playstyles).forEach(playstyle => { 7 | if (playstyle.name === 'unknown') { 8 | return; 9 | } 10 | let score = 3 * attributes[playstyle.primaryAttribute]; 11 | playstyle.secondaryAttributes.forEach(secondaryAttribute => { 12 | score += attributes[secondaryAttribute]; 13 | }); 14 | if (score > maxScore) { 15 | maxScore = score; 16 | maxPlaystyle = playstyle; 17 | } 18 | }); 19 | 20 | return maxPlaystyle; 21 | } 22 | 23 | export default calculatePlaystyle; 24 | -------------------------------------------------------------------------------- /packages/app/imports/store/reducers/_account.js: -------------------------------------------------------------------------------- 1 | import { LOGGED_IN, LOGGED_OUT, LOGGING_IN, RECEIVE_TROPHY_HUNTER } from '../types'; 2 | 3 | export const account = ( 4 | state = { 5 | userId: null, 6 | loggingIn: false, 7 | trophyHunter: null 8 | }, 9 | action 10 | ) => { 11 | const { type, ...data } = action; 12 | switch (type) { 13 | case LOGGED_IN: 14 | return { ...state, userId: data.userId }; 15 | case LOGGED_OUT: 16 | return { ...state, userId: null }; 17 | case LOGGING_IN: 18 | return { ...state, loggingIn: data.loggingIn }; 19 | case RECEIVE_TROPHY_HUNTER: 20 | return { ...state, trophyHunter: data.trophyHunter }; 21 | default: 22 | return state; 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /packages/app/imports/ui/components/generic/_BoxTitle.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | import { Typography } from './_Typography'; 4 | import { withStyles } from './_Styles'; 5 | 6 | const styles = { 7 | title: { 8 | position: 'relative' 9 | } 10 | }; 11 | 12 | const BoxTitle = ({ classes, children, ...other }) => ( 13 | 14 | {children} 15 | 16 | ); 17 | 18 | BoxTitle.propTypes = { 19 | classes: PropTypes.object.isRequired, 20 | children: PropTypes.node.isRequired 21 | }; 22 | 23 | const enhanced = withStyles(styles)(BoxTitle); 24 | 25 | export { enhanced as BoxTitle }; 26 | -------------------------------------------------------------------------------- /packages/app/packages/ecmascript-ts/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | name: 'lmachens:ecmascript-ts', 3 | version: '1.0.2', 4 | summary: 'Compiler plugin that supports ES2015+ in all .ts and .tsx files', 5 | documentation: 'README.md', 6 | git: 'https://github.com/lmachens/ecmascript-ts' 7 | }); 8 | 9 | Package.registerBuildPlugin({ 10 | name: 'compile-ecmascript-ts', 11 | use: ['babel-compiler'], 12 | sources: ['plugin.js'] 13 | }); 14 | 15 | Package.onUse(function(api) { 16 | api.use('isobuild:compiler-plugin'); 17 | api.use('babel-compiler'); 18 | 19 | api.imply('modules'); 20 | api.imply('ecmascript-runtime'); 21 | api.imply('babel-runtime'); 22 | api.imply('promise'); 23 | api.imply('dynamic-import'); 24 | }); 25 | -------------------------------------------------------------------------------- /packages/www/components/CS/CS.tsx: -------------------------------------------------------------------------------- 1 | import { Tooltip, Typography } from '@material-ui/core'; 2 | import { TypographyProps } from '@material-ui/core/Typography'; 3 | import React, { FunctionComponent } from 'react'; 4 | 5 | interface CSProps extends TypographyProps { 6 | totalMinionsKilled: number; 7 | neutralMinionsKilled: number; 8 | } 9 | 10 | const CS: FunctionComponent = ({ 11 | totalMinionsKilled = 0, 12 | neutralMinionsKilled = 0, 13 | ...other 14 | }) => { 15 | return ( 16 | 17 | {totalMinionsKilled + neutralMinionsKilled} CS 18 | 19 | ); 20 | }; 21 | 22 | export default CS; 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | * **I'm submitting a ...** 2 | 3 | - [ ] bug report 4 | - [ ] feature request 5 | - [ ] support request 6 | 7 | * **for the ...** 8 | 9 | - [ ] Overwolf app 10 | - [ ] Website (www.th.gl) 11 | - [ ] Game End Summary Shelf 12 | 13 | * **What is the current behavior?** (you can simply paste screenshots here) 14 | 15 | 16 | 17 | * **What is the expected behavior?** 18 | 19 | 20 | 21 | * **If the current behavior is a bug, please provide the steps to reproduce the problem** (e.g. summoner name, region, match mode) 22 | 23 | 24 | 25 | * **Other information** (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, patch notes, etc) 26 | 27 | --------------------------------------------------------------------------------