UNPKG

hubspy

Version:

A package to extract github metadata and total contributions for a github user.

58 lines (57 loc) 2.3 kB
export function filterRepository(repositories, year) { if (!repositories || (repositories === null || repositories === void 0 ? void 0 : repositories.length) === 0) { return undefined; } let filteredRepositories = repositories; if (year) filteredRepositories = repositories.filter(repo => repo.last_updated_at === year); if (filteredRepositories.length === 0) { return undefined; } return filteredRepositories.reduce((prev, current) => (prev.starred > current.starred) ? prev : current); } export function getMostStarredRepository(repositories, year) { if (!repositories || (repositories === null || repositories === void 0 ? void 0 : repositories.length) === 0) { return []; } let filteredRepositories = repositories; if (year) filteredRepositories = repositories.filter(repo => repo.last_updated_at === year); if (filteredRepositories.length === 0) { return []; } let maxStarred = Math.max(...filteredRepositories.map(repo => repo.starred)); return filteredRepositories.filter(repo => repo.starred === maxStarred); } export function getTopLanguages(repositories, year) { if (!repositories || (repositories === null || repositories === void 0 ? void 0 : repositories.length) === 0) { return []; } let filteredRepositories = repositories; if (year) filteredRepositories = repositories.filter(repo => repo.last_updated_at === year); if (filteredRepositories.length === 0) { return []; } const languagesMap = new Map(); filteredRepositories.forEach(repo => { if (languagesMap.has(repo.top_language)) { languagesMap.set(repo.top_language, languagesMap.get(repo.top_language) + 1); } else { languagesMap.set(repo.top_language, 1); } }); let totallanguagesUsed = 0; languagesMap.forEach((value, key) => { totallanguagesUsed += value; }); let topLanguages = []; languagesMap.forEach((value, key) => { topLanguages.push({ language: key, percentage: ((value / totallanguagesUsed) * 100).toFixed().toString() }); }); return topLanguages.sort((a, b) => parseFloat(b.percentage) - parseFloat(a.percentage)); }