hubspy
Version:
A package to extract github metadata and total contributions for a github user.
58 lines (57 loc) • 2.3 kB
JavaScript
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));
}