├── 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 |
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 |
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 |
--------------------------------------------------------------------------------