in theme/gatsby-node.js [116:155]
async function fetchContributors(repo, filePath, accessToken = '') {
const hash = `${repo.user}/${repo.project}/${filePath}`
const cached = CONTRIBUTOR_CACHE.get(hash)
if (cached) {
return cached
}
try {
const req = {
method: 'get',
baseURL: 'https://api.github.com/',
url: `/repos/${repo.user}/${repo.project}/commits?path=${filePath}&per_page=100`
}
if (accessToken && accessToken.length) {
req.headers = {
Authorization: `token ${accessToken}`
}
}
const {data} = await axios.request(req)
const commits = data
.map(commit => ({
login: commit.author && commit.author.login,
latestCommit: {
date: commit.commit.author.date,
url: commit.html_url
}
}))
.filter(contributor => Boolean(contributor.login))
const result = uniqBy(commits, 'login')
CONTRIBUTOR_CACHE.set(hash, result)
return result
} catch (error) {
console.error(`[ERROR] Unable to fetch contributors for ${filePath}. ${error.message}`)
return []
}
}