UNPKG

startgg-helper

Version:

A set of functions and classes useful to communicate with the start.gg API, using any client (YOU NEED TO PROVIDE A CLIENT YOURSELF, SEE README)

81 lines (67 loc) 2.51 kB
const placements = [ 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304, 131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864, 2097152 ] //sggutil /** * Extracts a slug from a string. Can be either the slug directly or the full URL. * @param {string} string */ export function extractSlug(string){ if (string.includes("start.gg/")){ return string.split("start.gg/")[1]; } return string; } /** * * @param {string[]} list * @returns */ export function extractSlugs(list){ return list.map(str => extractSlug(str)); } export function getDoubleEliminationPlacementTier(placement){ for (let tier of placements){ if (placement <= tier) return tier; } } export function getDoubleEliminationUpsetFactorFromSeeds(winnerSeed, loserSeed){ if (winnerSeed < loserSeed) return 0; let winnerExpectedTierID = -1, loserExpectedTierID = -1; for (let i = 0; i < placements.length; i++){ if (winnerSeed <= placements[i]) {winnerExpectedTierID = i; break;} } for (let i = 0; i < placements.length; i++){ if (loserSeed <= placements[i]) { loserExpectedTierID = i; break; } } if (!winnerExpectedTierID < 0 || !loserExpectedTierID < 0) return undefined; return (winnerExpectedTierID - loserExpectedTierID); } export function getDoubleEliminationUpsetFactorFromSet(set){ let score1 = set.slots[0].standing.stats.score.value; let score2 = set.slots[1].standing.stats.score.value; let seed1 = set.slots[0].entrant.initialSeedNum; let seed2 = set.slots[1].entrant.initialSeedNum; if (score1 < 0 || score2 < 0) return [0, 0]; //console.log(set.slots[0].entrant.name, set.slots[1].entrant.name); //console.log(score1, score2, seed1, seed2); return (score1 > score2) ? [getDoubleEliminationUpsetFactorFromSeeds(seed1, seed2), 0] : [getDoubleEliminationUpsetFactorFromSeeds(seed2, seed1), 1]; } /** * Returns the tournament part in an event slug. Assumes the event slug is valid * @param {string} eventSlug */ export function getTournamentSlugFromEventSlug(eventSlug){ return eventSlug.split(/\/event/g)[0]; }