Public
Edited
Jun 12, 2023
12 forks
8 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
isSample = !hasApiKey
Insert cell
pullRequest = isSample ? pullRequestSample : fetchGithub(`/repos/${repo}/pulls/${prNumber}`)
Insert cell
// fetch the files included in the chosen pull request
files = isSample ? filesSample : fetchGithub(`/repos/${repo}/pulls/${prNumber}/files`)
Insert cell
prUser = isSample ? prUserSample : fetchGithub(`/users/${pullRequest.user.login}`)
Insert cell
data = isSample ? fileCommitDataSample : getCommitInfoForFiles(prNumber)
Insert cell
getCommitInfoForFiles = async prNumber => {
const files = await fetchGithub(`/repos/${repo}/pulls/${prNumber}/files`);
const fileNames = files.map((f) => f.filename);

// build set of 15 most recent commits across all files in the PR
const commits = new Set();
for await (const fileCommits of files.map((f) =>
fetchGithub(`/repos/${repo}/commits`, {
path: f.filename,
per_page: limit
})
)) {
for (let { sha } of fileCommits) {
commits.add(sha);
}
}

// get commit metdata for each of the set of commits
const commitInfo = await Promise.all(
[...commits].map((c) => fetchGithub(`/repos/${repo}/commits/${c}`))
);

// flatten into tidy structure: 1 row per file and commit metadata
return parseCommitInfo(fileNames, commitInfo);
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more